hadoop fs -ls s3://bucket 或 s3a://bucket 抛出“没有这样的文件或目录”错误
Posted
技术标签:
【中文标题】hadoop fs -ls s3://bucket 或 s3a://bucket 抛出“没有这样的文件或目录”错误【英文标题】:hadoop fs -ls s3://bucket or s3a://bucket throws "No such file or directory" error 【发布时间】:2021-06-21 07:07:51 【问题描述】:在新创建的 EMR 集群中,使用:
hdfs dfs -ls s3://bucket
hadoop fs -ls s3://bucket
hadoop fs -ls s3a://
等
...全部返回错误:
“ls: `s3://bucket': 没有这样的文件或目录”
EMR 实例配置文件具有完整的 S3 访问权限core-site.xml
中未指定任何内容
aws s3 ls
可以正确列出所有的桶
为什么会这样?
【问题讨论】:
【参考方案1】:默认情况下,hadoop fs -ls
shows user home directory,转换为/user/username
。
调用hadoop fs -ls s3://bucket
时,S3连接器会尝试查找s3://bucket/user/hadoop
(用你的用户名替换hadoop
),这可能不存在,会导致错误。
错误不清楚,但与ls
ing 一个不存在的存储桶不同。为此,错误将是ls: Bucket bucket_name does not exist
。
为了避免这种情况:
在存储桶名称后附加/
添加完整路径
要调试这个:
export HADOOP_ROOT_LOGGER=DEBUG,console
关闭调试日志
export HADOOP_ROOT_LOGGER=WARN,console
【讨论】:
(是的,这是一个经常性的 PITA。虽然修复 hadoop fs shell 为时已晚)。有人讨论过“我们应该创建 / s3a 存储桶的主目录吗?”,但我们决定不这样做,因为它会在不同版本中不一致以上是关于hadoop fs -ls s3://bucket 或 s3a://bucket 抛出“没有这样的文件或目录”错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 pyspark 从 AWS s3 Bucket 读取 csv 时出错
Spark saveAsTextFile写入空文件 - _ $ folder $到S3
在 S3 Bucket 的子文件夹中托管 index.html
text [在S3 Bucket上启用CORS] #aws#s3
关于aws-s3-bucket-静态网站托管相关的查询-S3.Client.get_bucket_website(**kwargs)