【问题标题】:s3distcp: can not create path from empty strings3distcp:无法从空字符串创建路径
【发布时间】:2013-04-04 12:21:06
【问题描述】:

在从 S3 到 HDFS 运行 s3distcp 时:

 sudo -u hdfs hadoop jar /usr/lib/hadoop/lib/s3distcp.jar --src s3n://workAAAA-KKKK-logs/production-logs/Log-XXXX-click/Log-XXXXX-click-2013-03-27_06-21-19_i-7XXb2x39_00037.gz  --dest hdfs:///test/

我得到以下异常。

我的路径语法 (s3n:// ; hdfs:///) 有问题吗? 有没有人遇到过这个问题?

13/04/04 12:10:52 INFO s3distcp.S3DistCp: Using output path 'hdfs:/tmp/96a8e57b-4c68-406c-b4ca-bf212de12d93/output'
13/04/04 12:10:53 INFO s3distcp.FileInfoListing: Opening new file: hdfs:/tmp/96a8e57b-4c68-406c-b4ca-bf212de12d93/files/1
Exception in thread "main" java.lang.IllegalArgumentException: Can not create a Path from an empty string
        at org.apache.hadoop.fs.Path.checkPathArg(Path.java:91)
        at org.apache.hadoop.fs.Path.<init>(Path.java:99)
        at org.apache.hadoop.fs.Path.<init>(Path.java:58)
        at com.amazon.external.elasticmapreduce.s3distcp.FileInfoListing.getOutputFilePath(FileInfoListing.java:155)
        at com.amazon.external.elasticmapreduce.s3distcp.FileInfoListing.add(FileInfoListing.java:111)
        at com.amazon.external.elasticmapreduce.s3distcp.FileInfoListing.add(FileInfoListing.java:78)
        at com.amazon.external.elasticmapreduce.s3distcp.S3DistCp.createInputFileListS3(S3DistCp.java:122)
        at com.amazon.external.elasticmapreduce.s3distcp.S3DistCp.createInputFileList(S3DistCp.java:60)
        at com.amazon.external.elasticmapreduce.s3distcp.S3DistCp.run(S3DistCp.java:529)
        at com.amazon.external.elasticmapreduce.s3distcp.S3DistCp.run(S3DistCp.java:216)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
        at com.amazon.external.elasticmapreduce.s3distcp.Main.main(Main.java:12)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:208)

【问题讨论】:

  • 这可能不是这里的问题,但源路径应该是目录路径而不是文件路径。
  • 你确定hdfs:///不应该是hdfs://吗?
  • @Amar 你完全正确,现在可以了!
  • @Quetzalcoatl hdfs:/// 是正确的(三个斜线)。
  • @bocse 很高兴它有帮助。

标签: hadoop amazon-web-services amazon-s3 hdfs


【解决方案1】:

如果您需要,有一种方法可以请求特定文件。您可以使用 --copyFromManifest 选项,它允许您为 s3distcp 提供一个包含所有文件路径的清单文件(即使在不同的文件夹中)。

【讨论】:

    【解决方案2】:

    当您尝试写入即使存在但没有访问权限的路径时,也会出现此问题。

    当您尝试在不存在的 Redshift 架构中写入时也是如此。

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 2014-05-09
      • 1970-01-01
      • 2020-06-13
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 2017-12-12
      相关资源
      最近更新 更多