我移植了一些代碼從星火1.6至2.1星火與下面的問題搏鬥行數據幀:問題,以創建包含Option [T]
這星火1.6
import org.apache.spark.sql.types.{LongType, StructField, StructType}
val schema = StructType(Seq(StructField("i", LongType,nullable=true)))
val rows = sparkContext.parallelize(Seq(Row(Some(1L))))
sqlContext.createDataFrame(rows,schema).show
完美地工作在星火2.1.1相同的代碼:
import org.apache.spark.sql.types.{FloatType, LongType, StructField, StructType}
val schema = StructType(Seq(StructField("i", LongType,nullable=true)))
val rows = ss.sparkContext.parallelize(Seq(Row(Some(1L))))
ss.createDataFrame(rows,schema).show
提供了以下運行時異常:
org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 8.0 failed 4 times, most recent failure: Lost task 0.3 in stage 8.0 (TID 72, i89203.sbb.ch, executor 9): java.lang.RuntimeException: Error while encoding: java.lang.RuntimeException: scala.Some is not a valid external type for schema of bigint
那麼,如果我想要可空Long
而不是使用Option[Long]
,我應該如何將這些代碼轉換爲Spark 2.x?
感謝這個信息。我知道打算輸入數據集它是最乾淨的解決方案,但也需要一些時間來重構代碼 –
@RaphaelRoth唯一的問題是,周圍沒有任何詞彙。這是標準。 – eliasah
我不太確定強類型數據集是否真的會成爲新標準......我有些懷疑 –