我正在尝试读取文件并连接字符串中的每一行,下面是代码:
var str:string
val RDD1 = sc.textFile("file_path").foreach{line =>
str += line
Println (str) // prints string one by one after concatenation
}
Println(str) // empty string
输入文件中的所有行都以字符串形式连接,我在foreach中使用Println语句检查。 但是当我在foreach外部打印字符串变量时它是空的。 有什么理由吗?理想情况下,它应该使用填充值打印。
提前致谢
答案 0 :(得分:0)
我认为你是spark的新手,所以首先要了解spark概念,比如转换(map,flatmap,reduceby ....),action(collect,take ..),而不是实现代码。
您的方案无效,但您希望连接所有行,此代码将帮助您
val rddOfString = sc.textFile("file_path").map{
line =>
(1,line)//add unique key on each line
}.reduceByKey(_+_)//use reduce by for concatenation all lines
.map(_._2)//select your concat string
.collect//collect your data
您将获得String数组,其中第一个索引包含您的输出
val str=rddOfString(0)