如何使用PySpark对本地桌面文件夹中的目录中的文件(pdf,docs,txt,xls)进行并行处理?

时间:2019-04-26 16:07:03

标签: python-3.x apache-spark pyspark extraction

我的本​​地桌面上的单个目录中的不同子目录中有大约9000个文件。该目录的总大小约为15GB。我不想经历python编程方法,这非常耗时。我想为任务使用某种分布式并行处理。我要执行以下操作

  • 以并行方式摄取所有这些文件。
  • 从这些文档中提取文本(我已经有一个基于tika的python脚本从这些文件中提取文本)
  • 将文件名和内容(提取的文本)存储在数据框中。

我已经使用普通的python脚本完成了上述任务。但我想使用Spark / pySpark执行上述任务。我以前从未使用过Spark,因此需要一些有关路线图的指导。

我如何并行地将这些文档传递给Spark,然后将提取脚本应用于这些文档?我可以采取什么方法?

1 个答案:

答案 0 :(得分:0)

火花对于pdf,xls,docx格式不是最佳选择。这些格式具有其自身的压缩类型,并且不能很好地并行化。它们需要完全加载到内存中才能进行解压缩。

首选压缩格式是面向列的压缩格式,例如镶木地板,兽人或平面文件,例如json,txt ...这些可以被部分有效地处理,而不必将整个文件加载到内存中进行解压缩。

如果您碰巧只有文本文件,它们具有不同的结构或非结构化,那么我建议使用spark的RDD API读取它们:

sc.wholeTextFiles(input_directory)

这将加载每个文本文件的内容,并将文件名附加到每个记录。

否则,使用multiprocessing在python中并行化会更有效。