我的本地桌面上的单个目录中的不同子目录中有大约9000个文件。该目录的总大小约为15GB。我不想经历python编程方法,这非常耗时。我想为任务使用某种分布式并行处理。我要执行以下操作
我已经使用普通的python脚本完成了上述任务。但我想使用Spark / pySpark执行上述任务。我以前从未使用过Spark,因此需要一些有关路线图的指导。
我如何并行地将这些文档传递给Spark,然后将提取脚本应用于这些文档?我可以采取什么方法?
答案 0 :(得分:0)
火花对于pdf,xls,docx格式不是最佳选择。这些格式具有其自身的压缩类型,并且不能很好地并行化。它们需要完全加载到内存中才能进行解压缩。
首选压缩格式是面向列的压缩格式,例如镶木地板,兽人或平面文件,例如json,txt ...这些可以被部分有效地处理,而不必将整个文件加载到内存中进行解压缩。
如果您碰巧只有文本文件,它们具有不同的结构或非结构化,那么我建议使用spark的RDD API读取它们:
sc.wholeTextFiles(input_directory)
这将加载每个文本文件的内容,并将文件名附加到每个记录。
否则,使用multiprocessing
在python中并行化会更有效。