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

问题描述 投票:-1回答:1

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

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

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

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

python-3.x apache-spark pyspark extraction
1个回答
0
投票

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

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

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

sc.wholeTextFiles(input_directory)

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

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

© www.soinside.com 2019 - 2024. All rights reserved.