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 -lsshows user home directory,转换为/user/username

调用hadoop fs -ls s3://bucket时,S3连接器会尝试查找s3://bucket/user/hadoop(用你的用户名替换hadoop),这可能不存在,会导致错误。

错误不清楚,但与lsing 一个不存在的存储桶不同。为此,错误将是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 时出错

将文件从 s3:// 复制到本地文件系统

Spark saveAsTextFile写入空文件 - _ $ folder $到S3

在 S3 Bucket 的子文件夹中托管 index.html

text [在S3 Bucket上启用CORS] #aws#s3

关于aws-s3-bucket-静态网站托管相关的查询-S3.Client.get_bucket_website(**kwargs)