Скопируйте файлы с SFTP-сервера на HDFS, используя Python - PullRequest
0 голосов
/ 28 января 2020

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

1 Ответ

2 голосов
/ 02 февраля 2020

Я предлагаю вам установить Apache Nifi, StreamSets или KNIME, которые позволяют графически передавать содержимое FTP в HDFS (и другие более сложные рабочие нагрузки ETL)

StreamSets или KNIME сгенерируют для вас Spark-код сцены

...