我有一个 Spark DataFrame:
我必须使用 Spark 和 Scala 来计算RankingMetrics的平均精度。我猜根据文档我们必须使用 RDD 而不是 DataFrame。我尝试了以下方法:
var llist = df.select("predicted", "actual").rdd.map(x => (x.get(0), x.get(1))).collect()
// It gave Array[(Any, Any)]
var df_rdd =sc.parallelize(llist)
// df_rdd is org.apache.spark.rdd.RDD[(Any, Any)]
val metrics = new RankingMetrics(df_rdd)
// This gave me an error
错误:
错误:类型不匹配;
找到:org.apache.spark.rdd.RDD[(Any, Any)]
需要:org.apache.spark.rdd.RDD[(Array[?], Array[?])]
注意:(Any, Any) > : (Array[?], Array[?]),但是类 RDD 在类型 T 中是不变的。
您可能希望将 T 定义为 -T。(SLS 4.5)
我正在使用 Spark 2.4.3 版
如何将此 DataFrame 转换为该格式,以便计算平均精度?谢谢。