如何在python中使用pyarrow连接到hdfs

时间:2019-06-24 20:37:50

标签: python hadoop hdfs pyarrow

我已经安装了==,并想连接到Hadoop集群中的hdfs文件。我有以下一行,它给我错误。

pyarrow

这是我收到的错误消息

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

我应该如何安装ArrowIOError: Unable to load libhdfs ?我还需要做什么其他依赖条件?

1 个答案:

答案 0 :(得分:0)

pyarrow.hdfs.connect(host='default', port=0, user=None, kerb_ticket=None, driver='libhdfs', extra_conf=None)

您必须确保libhdfs.so$HADOOP_HOME/lib/nativ中的$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任务中加载它。 see informations

  1. 首先将库复制到HDFS:bin/hadoop fs -copyFromLocal mylib.so.1 /libraries/mylib.so.1
  2. 工作启动程序应包含以下内容:

    DistributedCache.createSymlink(conf); DistributedCache.addCacheFile(“ hdfs:// host:port / libraries / mylib.so。 1#mylib.so“,conf);

  3. MapReduce任务可以包含:System.loadLibrary("mylib.so");

注意:如果您下载或构建了本地hadoop库,则无需使用DistibutedCache使该库可用于MapReduce任务。