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

问题描述 投票:0回答:1

我正在使用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)
python hadoop subprocess hdfs
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.