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

oug3syen  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(838)

我已经安装了 pyarrow 并希望连接到hadoop集群中的hdfs文件。我有下面这行,它给我错误。

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

这是我收到的错误信息

ArrowIOError: Unable to load libhdfs

我应该如何安装 libhdfs ? 我还需要做哪些依赖项/设置?

col17t5w

col17t5w1#

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

你必须确定 libhdfs.so$HADOOP_HOME/lib/nativ e和in $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任务加载它。参见信息
首先将库复制到hdfs: bin/hadoop fs -copyFromLocal mylib.so.1 /libraries/mylib.so.1 作业启动程序应包含以下内容:
distributedcache.createsymlink(conf);distributedcache.addcachefile(“hdfs://host:port/libraries/mylib.so。1#mylib.so“,形态);
mapreduce任务可以包含: System.loadLibrary("mylib.so"); 注意:如果您下载或构建了本机hadoop库,则不需要使用distibutedcache使库可用于mapreduce任务。

相关问题