我有一个存储在HDFS中.txt中的文件名和路径列表,它们也是存储在HDFS中的文件的路径。我想调用一个函数进行一些解析,然后并行写入HDFS。这就是我到目前为止所做的:
val files = sc.textfile("Filenames.txt")
val paths = files.map( line => line.split(" ") )
sc.textfile.collect().foreach( paths(1) => parseAndWrite( paths(1) ) )
然而,Spark最终一次解析每个文件,而不是并行解析。我也试过用另一张地图跳过收集,并使用来自scala集合parVector的.par,但无济于事。我怎样才能最好地接近这个?
编辑:
parseAndWrite将包含以下内容:
def parseAndWrite(filepath: String): Unit = {
val df = spark.read.format("csv").load(filepath)
// do some parsing logic on df here
dfParsed.write.format("csv").save(anotherfilepath)
}
答案 0 :(得分:0)
请参阅
https://stackoverflow.com/a/24036343/5568528
您可以使用通配符
sc.textfile("/home/mydir/files/*")
或者,可能爆炸阵列
在python中,这将是
sc.textfile(*paths)