0
所以这是我一直在尝试,我是一个新手在这里工作与火花!如何在foreach循环中运行sc.textFile()并在其上执行联合?
我试图执行此代码
val ii=sc.parallelize(Seq(("e.txt"),("r.txt"))).foreach{i => sc.textFile(i)}
但我发现了 “空指针异常”
谢谢!
所以这是我一直在尝试,我是一个新手在这里工作与火花!如何在foreach循环中运行sc.textFile()并在其上执行联合?
我试图执行此代码
val ii=sc.parallelize(Seq(("e.txt"),("r.txt"))).foreach{i => sc.textFile(i)}
但我发现了 “空指针异常”
谢谢!
您可以将多个文件添加到sc.textFile
。您不应该在地图操作中使用sc
。 map
函数将分发给不同的执行者,并且sc
居住在驱动程序中。因此它会抛出一个Nullpointer异常。
a.txt contents:
a.txt:line1
a.txt:line2
b.txt contents:
b.txt:line1
b.txt:line2
星火允许你在相同的操作添加更多的文件:
scala> sc.textFile("a.txt,b.txt").collect()
res1: Array[String] = Array(a.txt:line1, a.txt:line2, b.txt:line1, b.txt:line2)
希望这有助于和有乐趣星火!
sc.textFile(“a.txt,b.txt”)。collect()该语法按顺序读取文件,我需要以并行方式执行 –
它将并行执行。如果你打开Spark UI,你会看到创建了两个任务。当您添加更多文件时,任务数量会增加。 –
谢谢,我会尽快更新 –