如何使用Python pickle将文件转储到Hadoop HDFS目录?

时间:2017-07-26 22:05:24

标签: python hadoop hdfs

我在包含Python(2.7)类的目录中的VM上。我正在尝试将我的类的实例挑选到我的HDFS中的目录。

我正在尝试做一些事情:

import pickle

my_obj = MyClass() # the class instance that I want to pickle

with open('hdfs://domain.example.com/path/to/directory/') as hdfs_loc:
    pickle.dump(my_obj, hdfs_loc)

通过我所做的研究,我认为像snakebite这样的东西可能会有所帮助......但是有人有更具体的建议吗?

2 个答案:

答案 0 :(得分:1)

如果你在具有足够权限的Jupyter笔记本中运行,这是一个解决方法:

import pickle

my_obj = MyClass() # the class instance that I want to pickle
local_filename = "pickle.p"
hdfs_loc = "//domain.example.com/path/to/directory/"
with open(local_filename, 'wb') as f:
    pickle.dump(my_obj, f)
!!hdfs dfs -copyFromLocal $local_filename  $hdfs_loc

答案 1 :(得分:0)

如果您使用 PySpark,那么您可以使用 saveAsPickleFile 方法:

temp_rdd = sc.parallelize(my_obj)
temp_rdd.coalesce(1).saveAsPickleFile("/test/tmp/data/destination.pickle")