如何在Spark中将DataFrame或RDD [object]转换为Array [Object]?

时间:2016-03-09 04:07:38

标签: apache-spark apache-spark-sql spark-streaming rdd spark-dataframe

我目前正在使用spark streamingspark sql作为我当前的项目。有没有办法将Array[Object]转换为RDD[object]DataFrame?我正在做如下的事情:

val myData = myDf.distinct()
                 .collect()
                 .map{ row => 
                   new myObject(row.getAs[String]("id"), row.getAs[String]("name"))
                 }

上面代码段中的myData将为Array[myObject]。如何将其发送到RDD[myObject]或直接发送到DataFrame以便下次执行?

2 个答案:

答案 0 :(得分:2)

import org.apache.spark.sql.Row

case class myObject(id:String, name:String)

val myData = myDf.distinct.map {
  case Row(id:String, name:String) => myObject(id,name)
}

答案 1 :(得分:1)

我想我会把它解析为RDD [myObject]。我希望这是正确的方法。

val myData = myDf.distinct()
             .collect()
             .map{ row => 
               new myObject(row.getAs[String]("id"), row.getAs[String]("name"))
             }
val myDataRDD = rdd.SparkContext.parallelize(myData) // since this code snippet is inside a foreachRDD clause.