簡體   English   中英

從LIST [Row]在scala中制作RDD(在Spark中)

[英]Make RDD from LIST[Row] In scala(in spark)

我正在使用Scala和Spark編寫一些代碼,並且想要從RDD或LIST [Row]制作CSV文件。

我想處理“ ListRDD”數據並列,因此輸出的數據將不止一個文件。

val conf = new SparkConf().setAppName("Csv Application").setMaster("local[2]")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc)
val logFile = "data.csv "
val rawdf = sqlContext.read.format("com.databricks.spark.csv")....
val rowRDD = rawdf.map { row =>
  Row(
    row.getAs( myMap.ID).toString,
    row.getAs( myMap.Dept)
    .....
  )
}
 val df = sqlContext.createDataFrame(rowRDD, mySchema)
val MapRDD = df.map { x => (x.getAs[String](myMap.ID), List(x)) }
val ListRDD = MapRDD.reduceByKey { (a: List[Row], b: List[Row]) => List(a, b).flatten }

myClass.myFunction( ListRDD)

在myClass中。

def myFunction(ListRDD: RDD[(String, List[Row])]) = {
    var rows: RDD[Row]
    ListRDD.foreach( row => { 
        rows.add? gather? ( make(row._2)) // make( row._2) will return List[Row]
    })
    rows.saveAsFile(" path") // it's my final goal
  }

def make( list: List[Row]) : List[Row] = {
    data processing from List[Row]
}

我試圖通過sc.parallelize(list)從List生成RDD數據,但是某種方式沒有任何效果。 anyidea從make函數生成RDD類型數據。

如果要從List [Row]創建RDD,可以采用以下方法

//Assuming list is your List[Row]
val newRDD: RDD[Object] = sc.makeRDD(list.toArray());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM