我已经安装了 pyarrow 并希望连接到hadoop集群中的hdfs文件。我有下面这行,它给我错误。
pyarrow
fs = pa.hdfs.connect(host='...', 50057, user='...', kerb_ticket='/tmp/krb5cc_0')
这是我收到的错误信息
ArrowIOError: Unable to load libhdfs
我应该如何安装 libhdfs ? 我还需要做哪些依赖项/设置?
libhdfs
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 :
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任务加载它。参见信息首先将库复制到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任务。
Hadoop 3.2.0
bin/hadoop fs -copyFromLocal mylib.so.1 /libraries/mylib.so.1
System.loadLibrary("mylib.so");
1条答案
按热度按时间col17t5w1#
你必须确定
libhdfs.so
在$HADOOP_HOME/lib/nativ
e和in$ARROW_LIBHDFS_DIR
.为了
HADOOP
:我知道的最后一个版本是
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任务。