我有一个只有文本文件的目录。文本文件的大小可能很大(以Gb为单位)。我必须通过向python函数发送前100行文件来处理每个文件。因此对于每个文件,python函数为该文件生成的输出仅取决于前100行。我无法使用wholeTextFiles
,因为它会将所有文件的内容加载到内存中。一种方法是我可以迭代目录的每个文件,并逐个使用textFile
api处理它。有没有更好的方法?基本上我想要类似于wholeTextFiles
所做的事情(即文件目录的一个分区和所有并行运行的任务的一个任务)但我只对文件的前100行感兴趣。
答案 0 :(得分:0)
我建议你使用binaryFiles。它将为您提供路径和Stream(DataInputStream)。然后,您可以通过从每个文件中只读取前100行来使用此流。
scala片段。
binaryFiles("/directory").flatMap(x=>consumer(x._1, x._2.open))