假设我在目录中有一些文件,我想读取每个文件并从文件中提取文件名和第一行(即标题)以进行一些验证。我们如何在spark(使用python)中执行此操作。
input_file = sc.textFile(sourceFileDir)
通过sc.textFile()
我们可以并行读取所有文件,但是使用map我们可以将任何规则或函数应用于rdd中的每个元素。我不明白如何使用sc.textFile()
目前,我正在使用for循环执行这些要求(如上所述)。
files = os.listdir(sourceFileDir)
for x in files:
**operations**
我如何以并行方式对所有文件执行相同操作,因为目录中有大量文件会节省一些时间。
提前致谢..
答案 0 :(得分:0)
textFile
不是您想要的。您应该使用wholeTextFile
。它创建一个rdd,其键为FileName,值为content。然后您应用地图仅获取第一行:
sc.wholeTextFiles(sourceFileDir).map(lambda x : (x[0], x[1].split('\n')[0]))
通过这样做,地图的输出是fileName和第1行。