【发布时间】:2019-06-03 07:14:52
【问题描述】:
我有以下 python 脚本(我设法在本地运行它):
#!/usr/bin/env python3
import folderstats
df = folderstats.folderstats('hdfs://quickstart.cloudera.8020/user/cloudera/files', hash_name='md5', ignore_hidden=True)
df.to_csv(r'hdfs://quickstart.cloudera.8020/user/cloudera/files.csv', sep=',', index=True)
我在该位置有目录:“文件”。我通过命令行甚至使用 HUE 检查了它,它就在那里。
(myproject) [cloudera@quickstart ~]$ hadoop fs -ls /user/cloudera
Found 1 items
drwxrwxrwx - cloudera cloudera 0 2019-06-01 13:30 /user/cloudera/files
问题是目录无法访问。
我尝试在我的本地终端上运行它:python3 script.py,甚至使用超级用户:sudo -u hdfs python3 script.py 并且输出显示:
Traceback (most recent call last):
File "script.py", line 5, in <module>
df = folderstats.folderstats('hdfs://quickstart.cloudera:8020/user/cloudera/files', hash_name='md5', ignore_hidden=True)
File "/home/cloudera/miniconda3/envs/myproject/lib/python3.7/site-packages/folderstats/__init__.py", line 88, in folderstats
verbose=verbose)
File "/home/cloudera/miniconda3/envs/myproject/lib/python3.7/site-packages/folderstats/__init__.py", line 32, in _recursive_folderstats
for f in os.listdir(folderpath):
FileNotFoundError: [Errno 2] No such file or directory: 'hdfs://quickstart.cloudera:8020/user/cloudera/files'
你能帮我澄清一下这个问题吗?
谢谢!
【问题讨论】:
-
如果您想使用 Python、Pyspark 或 PyArrow(使用 Pandas)在 HDFS 上处理 CSV,我知道的唯一选择是
-
感谢您的回答。我基本上尝试从我的 python 脚本“扫描”位于 HDFS 中的目录中的所有文件。我不知道如何访问这个目录。
-
HDFS 不是您的传统文件系统。所有请求都必须通过名称节点汇集。 WebHdfs 有一个可能有用的 LIST 操作,但您必须以某种方式知道哪些返回的条目是目录与文件
-
我已经尝试过 pyhdfs(pypi.org/project/pywebhdfs) 但没有成功。如果我想从 HDFS 写入/读取例如 .txt 文件,它会起作用。 Java 看起来是目前最快的选择。
-
Webhdfs 需要先开启,然后,你试过list_dir 功能吗? pythonhosted.org/pywebhdfs/…
标签: python hadoop hdfs cloudera