我正在使用python中的spark,尝试将PDF文件映射到一些自定义解析。目前我正在使用pdfs = sparkContext.binaryFiles("some_path/*.pdf")
加载PDFS。
我将RDD设置为可以使用pdfs.persist( pyspark.StorageLevel.MEMORY_AND_DISK )
在磁盘上缓存。
然后我尝试映射解析操作。然后保存一个pickle但它失败了,堆中出现了内存不足的错误。你能帮帮我吗?
以下是我所做的简化代码:
from pyspark import SparkConf, SparkContext
import pyspark
#There is some code here that set a args object with argparse.
#But it's not very interesting and a bit long, so I skip it.
def extractArticles( tupleData ):
url, bytesData = tupleData
#Convert the bytesData into `content`, a list of dict
return content
sc = SparkContext("local[*]","Legilux PDF Analyser")
inMemoryPDFs = sc.binaryFiles( args.filePattern )
inMemoryPDFs.persist( pyspark.StorageLevel.MEMORY_AND_DISK )
pdfData = inMemoryPDFs.flatMap( extractArticles )
pdfData.persist( pyspark.StorageLevel.MEMORY_AND_DISK )
pdfData.saveAsPickleFile( args.output )