无法从python脚本中的hdfs访问目录

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

我有以下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)

我有目录:“文件”在那个位置。我通过命令行检查了这个,甚至还有色调,它就在那里。

(myproject) [cloudera@quickstart ~]$ hadoop fs -ls /user/cloudera
Found 1 items
drwxrwxrwx   - cloudera cloudera          0 2019-06-01 13:30 /user/cloudera/files

问题是无法访问目录。
我试着在本地终端python3script.py上运行它,甚至在超级用户sudo-uhdfs python3script.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'

你能帮我澄清一下这个问题吗?
谢谢您!

bz4sfanl

bz4sfanl1#

python在带有本地linux(或windows)文件系统(fs)的单机上运行。
hadoop的hdfs项目是一个跨多台机器(节点)的分布式文件系统。
可能有一些自定义类可以在一台机器上读取hdfs数据,但是我不知道有任何自定义类,它会破坏分布式计算的目的。
您可以通过将数据从hdfs复制到本地文件系统(source hdfs location=>target local fs location) hadoop fs -get hdfs://quickstart.cloudera:8020/user/cloudera/files /home/user/<target_directory_name> python所在的位置或使用spark、hive或impala之类的东西来处理/查询数据。
如果数据量非常小,那么将文件从hdfs复制到本地fs以执行python脚本对于cloudera quickstart vm之类的东西应该是有效的。

相关问题