【发布时间】:2019-01-09 17:27:26
【问题描述】:
我正在尝试将数据帧转换为 spark 中的 RDD[Array[String]],目前我使用以下方法:
case class Array[String](c0:Long, c1:Integer, c2:Long, c3:String, c4:Integer, c5:Integer, c6:Integer)
val newData = df.distinct.map {
case Row(c0:Long, c1:Integer, c2:Long, c3:String, c4:Integer, c5:Integer, c6:Integer) => Array[String](c0:Long, c1:Integer, c2:Long, c3:String, c4:Integer, c5:Integer, c6:Integer)
}
val newRDD = newData.rdd
这给了我从数据帧到 RDD[Array[String]] 的转换——但是当我将它包装在一个函数中时;像这样:
def caseNewRDD(df: DataFrame): RDD[Array[String]] ={
case class Array[String](c0:Long, c1:Integer, c2:Long, c3:String, c4:Integer, c5:Integer, c6:Integer)
val newData = df.distinct.map {
case org.apache.spark.sql.Row(c0:Long, c1:Integer, c2:Long, c3:String, c4:Integer, c5:Integer, c6:Integer) => Array[String](c0:Long, c1:Integer, c2:Long, c3:String, c4:Integer, c5:Integer, c6:Integer)
}
val newRDD = newData.rdd
newRDD
}
我收到以下错误:
类型的表达 org.apache.spark.rdd.RDD[Array[scala.Predef.String]] 不符合 到预期类型 org.apache.spark.rdd.RDD[scala.Array[scala.Predef.String]]
我猜我生成的 Array 类型不符合要求,但我不知道为什么。
任何帮助将不胜感激。
【问题讨论】:
标签: scala apache-spark dataframe rdd