Как подключиться к hdfs используя pyarrow в python - PullRequest
2 голосов
/ 24 июня 2019

Я установил pyarrow и хотел бы подключиться к файлу hdfs в кластере Hadoop.У меня следующая строка, и она выдаёт мне ошибку.

 fs = pa.hdfs.connect(host='...', 50057, user='...', kerb_ticket='/tmp/krb5cc_0')

это сообщение об ошибке, которое я получаю

ArrowIOError: Unable to load libhdfs

Как мне установить libhdfs?Какие еще зависимости / настройки мне нужно сделать?

1 Ответ

0 голосов
/ 24 июня 2019
pyarrow.hdfs.connect(host='default', port=0, user=None, kerb_ticket=None, driver='libhdfs', extra_conf=None)

Вы должны быть уверены, что libhdfs.so в $HADOOP_HOME/lib/nativ e, а также в $ARROW_LIBHDFS_DIR.

Для HADOOP:

bash-3.2$ ls $ARROW_LIBHDFS_DIR
examples libhadoop.so.1.0.0 libhdfs.a libnativetask.a
libhadoop.a libhadooppipes.a libhdfs.so libnativetask.so
libhadoop.so libhadooputils.a libhdfs.so.0.0.0 libnativetask.so.1.0.0

последняя известная мне версия: Hadoop 3.2.0

Вы можете загрузить любую собственную разделяемую библиотеку, используя DistributedCache для распространения и создания ссылок на файлы библиотеки.

В этом примере показано, как распространять разделяемую библиотеку mylib..so и загрузите его из задачи MapReduce. см. Информацию

  1. Сначала скопируйте библиотеку в HDFS: bin/hadoop fs -copyFromLocal mylib.so.1 /libraries/mylib.so.1
  2. Программа запуска задания должна содержать следующее:

    DistributedCache.createSymlink (CONF);DistributedCache.addCacheFile ("hdfs: // хост: порт / библиотеки / mylib.so. 1 # mylib.so", conf);

  3. Задача MapReduce может содержать: System.loadLibrary("mylib.so");

Примечание. Если вы загрузили или собрали встроенную библиотеку hadoop, вам не нужно использовать DistibutedCache, чтобы сделать библиотеку доступной для ваших задач MapReduce.

...