我试图在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")
首先,我想在输出之前对输入数据进行更改。我应该为此目的返回功能吗?
其次,是否可以使用此功能将更多行附加到原始数据集?
答案 0 :(得分:1)
你犯了一个基本的Scala语法错误:
def calculations(row:String){
这定义了一个返回Unit
的函数。您需要返回TraversableOnce[String]
或子类。例如:
def calculations(row:String): Seq[String] = {
编译器可以自动推断出这一点,只是不要忘记=
:
def calculations(row:String) = {