我正在尝试通过将Spark RDD进行pickle序列化,并直接将序列化文件读入Python来实现目标。
a = sc.parallelize(['1','2','3','4','5'])
a.saveAsPickleFile('test_pkl')
接下来,我将test_pkl文件复制到本地,但我该如何直接在Python中读取它们呢?当我试着使用普通的pickle包时,尝试读取'test_pkl'的第一个pickle部分失败了:
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的pickle方法不同(如果我错了请纠正)。是否有办法将Spark中的数据进行腌制,并将这个腌制对象直接从文件中读取到Python中?