【发布时间】:2016-02-21 20:47:41
【问题描述】:
我正在尝试通过酸洗来序列化 Spark RDD,并将酸洗后的文件直接读入 Python。
a = sc.parallelize(['1','2','3','4','5'])
a.saveAsPickleFile('test_pkl')
然后我将 test_pkl 文件复制到我的本地。如何将它们直接读入 Python?当我尝试普通的泡菜包时,当我尝试读取“test_pkl”的第一个泡菜部分时它失败了:
pickle.load(open('part-00000','rb'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/pickle.py", line 1370, in load
return Unpickler(file).load()
File "/usr/lib64/python2.6/pickle.py", line 858, in load
dispatch[key](self)
File "/usr/lib64/python2.6/pickle.py", line 970, in load_string
raise ValueError, "insecure string pickle"
ValueError: insecure string pickle
我假设 spark 使用的酸洗方法与 python 酸洗方法不同(如果我错了,请纠正我)。有什么方法可以让我从 Spark 中提取数据并将这个腌制对象直接从文件中读取到 python 中?
【问题讨论】:
-
问题是它不是一个泡菜文件,而是一个包含泡菜对象的SequenceFile,我不知道有任何积极开发的 Python 中的 SequenceFiles 解析器。
标签: python apache-spark pickle pyspark