我正在对我的数据进行 NLP(自然语言处理)处理。数据采用文件形式,可以是 PDF/Text/Word/HTML 类型。这些文件存储在本地磁盘上的嵌套目录结构中。
我的基于 Java 的独立 NLP 解析器可以读取输入文件,从中提取文本并对提取的文本进行 NLP 处理。
我正在转换基于 Java 的 NLP 解析器以在 Spark 集群上执行它。我知道 Spark 可以从一个目录中读取多个文本文件并转换为 RDD 以便进一步处理。我的输入数据不仅是文本文件,而且是多种不同的文件格式。
我的问题是:如何在基于 Java 的 Spark 程序中有效地读取输入文件(PDF/Text/Word/HTML),以便在 Spark 集群中处理这些文件。
文件可以通过
读取sparkContext.binaryFiles()
然后可以被解析器处理。
对于 PDF 文档,我们现在有适用于 Apache Spark 的自定义开源 PDF 数据源:
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.master("local[*]") \
.appName("SparkPdf") \
.config("spark.jars.packages", "com.stabrise:spark-pdf-spark35_2.12:0.1.11") \
.getOrCreate()
df = spark.read.format("pdf") \
.option("imageType", "BINARY") \
.option("resolution", "200") \
.option("pagePerPartition", "2") \
.option("reader", "pdfBox") \
.option("ocrConfig", "psm=11") \
.load("path to the pdf file(s)")
df.select("path", "document").show()