Я копирую файлы из удаленного местоположения, используя 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)