我正在python 2.7
中使用多进程,并且需要使用命令HDFS
从hadoop fs -get
获取文件。
但是执行时
os.system('hadoop fs -get hdfs_file local_file')
在python代码中,多进程将发生冲突,某些进程将显示错误:
'get: No such file or directory'
,某些过程将会打印
'get: File local_file._COPYING_ does not exist'
如果我在后面的python代码中阅读了此内容,则会读取一个空文件。
是否有解决此问题的解决方案?或者,如果无法删除多进程体系结构,我该怎么做以获得HDFS
文件?
答案 0 :(得分:0)
您可能想在 local_file
上附加一些前缀,例如str(int(time.time()*1000000)) + local_file
_COPYING_
是下载过程中的暂存文件。如果您在多进程作业中使用相同的 local_file
名称下载,则某些进程提前完成,因此 local_file._COPYING_
被删除。因此,其他运行速度稍慢的进程会发现 local_file._COPYING_
不存在。
答案 1 :(得分:-1)
在命令提示符下运行以下代码:
hadoop fs -ls /hdfs_file local_file