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