Как отправить данные, хранящиеся в переменной в HDFS в Python

1

Пример:

data = "my first program"

Как написать данные этой переменной в файле hdfs с помощью python?

Я пробовал использовать:

command = 'echo $data | hdfs dfs -put - /user/test/abc.txt'
os.system(command)'
  • 0
    Если вы попробовали это, пожалуйста, добавьте полученное сообщение об ошибке.
  • 0
    Я не получаю никакой ошибки. но когда я попробовал hdfs dfs -put - /user/test/abc.txt, он показывает пустой файл abc.txt. это означает, что 'echo $ data' не работает должным образом
Показать ещё 5 комментариев
Теги:
hdfs
devops

1 ответ

0

Используйте модуль подпроцесса для запуска команды bash из python.

import subprocess
process = subprocess.Popen("echo $data | hdfs dfs -put - /user/test/abc.txt", 
shell="TRUE" , stdout=subprocess.PIPE)
process.wait()
print(process.returncode)

Но в идеале используйте собственный коннектор pythonhdfs. Проверять, выписываться.

Вот фрагмент из документации.

from pyarrow import HdfsClient
# Using libhdfs
hdfs = HdfsClient(host, port, username, driver='libhdfs') 
# Using libhdfs3
hdfs_alt = HdfsClient(host, port, username, driver='libhdfs3')
path = '/user/test/abc.txt'
with hdfs.open(path, 'wb') as f:
    f.write(data)'
  • 0
    пробовал первое решение, но все еще получал пустой файл при попытке второго решения, получая эту ошибку «Ошибка: нет модуля с именем pyarrow»
  • 0
    pip install pyarrow из командной строки должен решить эту проблему.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню