Pyarrow读取远程主机hdfs文件

vmpqdwk3  于 2023-11-15  发布在  HDFS
关注(0)|答案(1)|浏览(315)

我按照教程和指导从pyarrow文件,但我仍然不能正确使用hdfs文件系统从我的远程主机获取文件。
pre-requise:https://arrow.apache.org/docs/11.0/python/filesystems.html#filesystem-hdfs example get file:https://arrow.apache.org/docs/11.0/python/generated/pyarrow.fs.HadoopFileSystem.html#pyarrow.fs.HadoopFileSystem.open_input_file
下面是我的一些代码:

import os
import pyarrow
from pyarrow import fs

os.environ['ARROW_LIBHDFS_DIR'] = ""
os.environ["HADOOP_HOME"] = ""
os.environ["JAVA_HOME"] = ""
os.environ["CLASSPATH"] = ""

hdfs_config = {
     "host" : "myhost",
     "port" : 9443,
     "user" : "me"
}

hdfs = fs.HadoopFileSystem(
    #hdfs_config['host'], 
    "default", # use the core.xml
    hdfs_config['port'], 
    user=hdfs_config['user']
)

字符串
这一部分使用我输入的远程主机或core.xml文件中的主机创建pyarrow.fs.HadoopFileSystem。
但是,我有问题,我的远程文件路径像“/my_group/data/red_wine_quality.csv”

with hdfs.open_input_file(data) as f:
    print(f.readall())


文件没有找到,这是明确的,但为什么它是在我的本地文件系统搜索,而不是在hdfs上的。
如果使用本地文件的数据,它的工作,但这不是我想要的。
我尝试了很多例子,主机,但没有成功读取hdfs文件。

ubbxdtey

ubbxdtey1#

好吧,经过多次尝试,我发现为什么它不工作。
首先,os.environ [“HADOOP_HOME”]是无用的,无论我如何改变值或核心XML都没有考虑到。
第二个要解决的问题是类路径没有正确初始化。
跟着医生。

output = subprocess.run(
    ["hadoop", "classpath", "--glob"], 
    capture_output = True,
    text = True
)

os.environ["CLASSPATH"] = output.stdout

字符串
成功了

相关问题