1

私はJupyterノートブックでsparkを実行しています(jupyter-scalaカーネルを使用しています)。私はString型の列を持つデータフレームを持っており、これらの値をInt型として新しいデータフレームが必要です。私はこの投稿からすべての答えを試しました:Sparkデータフレームの列タイプを変更するとエラーになる

How to change column types in Spark SQL's DataFrame? 、私はこのエラーメッセージを取得しています。特に

org.apache.spark.SparkException: Job aborted due to stage failure 

org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 43, Column 44: Decimal 

は、だから私は行って、ライン43を見て:

/* 043 */ Decimal tmpDecimal6 = Decimal.apply(new java.math.BigDecimal(primitive5.toString())); 

は、しかし、私はエラーを取得しておきます

これまで私が試したことは何も働いていませんでした。ここ

は単純な例である:

castColumnToが上記ポストにマーティンセンヌによって示唆されるように定義される
val dF = sqlContext.load("com.databricks.spark.csv", Map("path" -> "../P80001571-ALL.csv", "header" -> "true")) 
val dF2 = castColumnTo(dF, "contbr_zip", IntegerType) 
dF2.show 


val dF = sqlContext.load("com.databricks.spark.csv", Map("path" -> 

object DFHelper 
    def castColumnTo(df: DataFrame, cn: String, tpe: DataType) : DataFrame = { 
    df.withColumn(cn, df(cn).cast(tpe)) 
    } 
} 

これは誤りである:

 
org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 3.0 failed 1 times, most recent failure: Lost task 0.0 in stage 3.0 (TID 3, localhost): java.util.concurrent.ExecutionException: java.lang.Exception: failed to compile: org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 97, Column 45: Decimal 

行97は次のようになります。

Decimal tmpDecimal18 = Decimal.apply(new java.math.BigDecimal(primitive17.toString())); 
+2

[mcve] – zero323

答えて

1

私はこの問題を解決したようです。それは私がノートブックで走るようにスパークを設定していた方法に関連していました。

import org.apache.spark.SparkConf 
import org.apache.spark.SparkContext 
val conf = new SparkConf().setAppName("appname").setMaster("local") 
val sc = new SparkContext(conf) 
import org.apache.spark.sql.SQLContext 
val sqlContext = new SQLContext(sc) 

sqlContext 
import sqlContext._ 
import sqlContext.implicits._ 

物事が今働いているように見える:

@transient val Spark = new ammonite.spark.Spark 

import Spark.{ sparkConf, sc, sqlContext } 
sc 
import sqlContext.implicits._ 
import sqlContext._ 

これは私が今持っているものである:これは前に私が持っていたものである

関連する問題