hadoop fs -ls s3://bucket 或 s3a://bucket 抛出 "No such file or directory" 错误
hadoop fs -ls s3://bucket or s3a://bucket throws "No such file or directory" error
在新建的EMR集群中,使用:
hdfs dfs -ls s3://bucket
hadoop fs -ls s3://bucket
hadoop fs -ls s3a://
- 等等
...所有 return 错误:
"ls: `s3://bucket': 没有那个文件或目录"
- EMR 实例配置文件具有完整的 S3 访问权限
core-site.xml
中未指定任何内容
aws s3 ls
可以正确列出所有桶
为什么会这样?
默认情况下,hadoop fs -ls
shows user home directory,转换为 /user/username
。
调用 hadoop fs -ls s3://bucket
时,S3 连接器将尝试查找 s3://bucket/user/hadoop
(用您的用户名替换尾部 hadoop
),这可能不存在并会导致错误。
错误不明确,但不同于ls
创建一个不存在的桶。为此,错误将是 ls: Bucket bucket_name does not exist
.
要避免这种情况:
- 在存储桶名称后添加一个
/
- 添加完整路径
要对此进行调试:
export HADOOP_ROOT_LOGGER=DEBUG,console
关闭调试日志
export HADOOP_ROOT_LOGGER=WARN,console
在新建的EMR集群中,使用:
hdfs dfs -ls s3://bucket
hadoop fs -ls s3://bucket
hadoop fs -ls s3a://
- 等等
...所有 return 错误:
"ls: `s3://bucket': 没有那个文件或目录"
- EMR 实例配置文件具有完整的 S3 访问权限
core-site.xml
中未指定任何内容
aws s3 ls
可以正确列出所有桶
为什么会这样?
默认情况下,hadoop fs -ls
shows user home directory,转换为 /user/username
。
调用 hadoop fs -ls s3://bucket
时,S3 连接器将尝试查找 s3://bucket/user/hadoop
(用您的用户名替换尾部 hadoop
),这可能不存在并会导致错误。
错误不明确,但不同于ls
创建一个不存在的桶。为此,错误将是 ls: Bucket bucket_name does not exist
.
要避免这种情况:
- 在存储桶名称后添加一个
/
- 添加完整路径
要对此进行调试:
export HADOOP_ROOT_LOGGER=DEBUG,console
关闭调试日志
export HADOOP_ROOT_LOGGER=WARN,console