使用Python将文件从SFTP服务器复制到HDFS

时间:2020-01-28 17:48:39

标签: python hadoop subprocess hdfs

我正在使用mget参数使用lftp从远程位置复制文件到本地计算机。然后,我正在使用hdfs dfs -cp localfolder/localfile to hdfsLocation。我希望能够将这些文件复制到HDFS,而不必将其存储在本地计算机上。

我已经尝试过下面的代码,但是我想通过本地计算机绕过该副本。我也尝试过

subprocess.Popen("""lftp sftp://login:password@adressLocal -e "lcd hdfs://serverHDFS:8020/projects/folder/child/tmp/;mget /var/projects/stockage/folder/child/.success/"""+fileName.ext+""";bye " """,
                 shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

但它不起作用

感谢您的帮助

import os
import subprocess
s=subprocess.Popen("""lftp sftp://login:password!@adress-e "lcd /projects/folder/child/tmp/;mget /var/projects/stockage/folder/child/.success/"""+fileName.ext+""";bye " """,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
cmd = 'hdfs dfs -put /var/projects/folder/file.ext hdfs://server:8020/projects/folder/tmp/'
subprocess.call(cmd, shell=True)

1 个答案:

答案 0 :(得分:2)

我建议您安装Apache Nifi,StreamSet或KNIME,它们可以将FTP内容以图形方式传输到HDFS(以及其他更高级的ETL工作负载)

StreamSets或KNIME将在幕后为您生成Spark代码

相关问题