我使用此代碼創建數據幀:Spark數據集使用空值減少?
val data = List(
List(444.1235D),
List(67.5335D),
List(69.5335D),
List(677.5335D),
List(47.5335D),
List(null)
)
val rdd = sparkContext.parallelize(data).map(Row.fromSeq(_))
val schema = StructType(Array(
StructField("value", DataTypes.DoubleType, true)
))
val df = sqlContext.createDataFrame(rdd, schema)
然後我申請我的UDF它:
val multip: Dataset[Double] = df.select(doubleUdf(df("value"))).as[Double]
,然後我想用這個數據集減輕:
val multipl = multip.reduce(_ * _)
在這裏,我得到了0.0作爲結果。 此外,我試着用同樣的結果篩選出空
val multipl = multip.filter(_ != null).reduce(_ * _)
。 如果我從數據中刪除空值,那麼所有工作都應該如此。如何使用空值減少工作量?
我的UDF的定義是這樣的:
val doubleUdf: UserDefinedFunction = udf((v: Any) => Try(v.toString.toDouble).toOption)
什麼是doubleUdf定義爲。 –
@JustinPihony我已將它添加到問題 – user2975535