有没有办法在 HDFS 下使用python函数列出所有文件(仅限)来自给定目录(也可能包含子目录)?最后,使用所有可用文件的列表生成pandas数据框?
我尝试使用 pywebhdfs ,但它只提供给定文件夹中的文件/目录 - 它不会执行递归搜索/查找。
请告知。
答案 0 :(得分:1)
有许多客户端库,如hdfs3和hdfsCLI,可用于此目的。 关于如何通过hdfsCLI实现它的示例
from hdfs import Config
import posixpath as psp
client = Config().get_client('dev')
fnames = client.list('/cdc')
print(fnames)
fpaths = [
psp.join(dpath, fname)
for dpath, _, fnames in client.walk('/cdc')
for fname in fnames
]
print(fpaths)
可以使用主目录中的.hdfscli.cfg
文件(或通过HDFSCLI_CONFIG
环境变量配置的其他路径来实现客户端连接。
配置文件的示例外观如下:
[global]
default.alias = dev
[dev.alias]
url = http://<host>:<port>
您也可以选择使用InsecureClient
请参阅https://hdfscli.readthedocs.io/en/latest/index.html了解使用情况和下载说明。