具有CSV RDD功能的Spark Flatmap

时间:2016-05-08 04:26:16

标签: scala csv apache-spark rdd

我试图在CSV RDD上的flatMap函数中应用函数。

以下是数据输入:

val rdd = spark.textFile("C:\\Users\\user\\Google Drive\\Besigheid\\Spark Project\\Spark Project - Project Property Value and Costs.csv")

我正在使用名为calculate的函数:

def calculations(row:String){
      val data = row.split(",").map(_.trim)
      val number_of_years = 100
      val rate = 0.06
      data :+ "0"
}

我现在想要在RDD中的原始数据上运行该函数,并对后续输出数据进行更改。不幸的是,下面的行不能编译。

rdd.flatMap(row => calculations(row)).saveAsTextFile("C:\\Users\\user\\Google Drive\\Besigheid\\Spark Project\\output")

首先,我想在输出之前对输入数据进行更改。我应该为此目的返回功能吗?

其次,是否可以使用此功能将更多行附加到原始数据集?

1 个答案:

答案 0 :(得分:1)

你犯了一个基本的Scala语法错误:

def calculations(row:String){

这定义了一个返回Unit的函数。您需要返回TraversableOnce[String]或子类。例如:

def calculations(row:String): Seq[String] = {

编译器可以自动推断出这一点,只是不要忘记=

def calculations(row:String) = {