使用python将文件从sftp服务器复制到hdfs

ma8fv8wu  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(489)

我正在使用lftp和mget参数将文件从远程位置复制到本地计算机。那我就用 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)
33qvvth1

33qvvth11#

我建议您安装apachenifi、streamset或knime,它们允许您以图形方式将ftp内容传输到hdfs(以及其他更高级的etl工作负载)
streamset或knime将在幕后为您生成spark代码

相关问题