2013-04-04 4 views
5

S3 से s3distcp चल रहा जबकि 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) 
+4

यह समस्या यहां नहीं हो सकती है लेकिन स्रोत पथ निर्देशिका पथ होना चाहिए, न कि फ़ाइल पथ। – Amar

+2

क्या आप निश्चित हैं कि 'hdfs: ///' 'hdfs: //' नहीं होना चाहिए? – Quetzalcoatl

+0

@Amar आप पूरी तरह से सही हैं, अब यह काम करता है! – bocse

उत्तर

0

यदि आपको आवश्यकता हो तो विशिष्ट फ़ाइलों का अनुरोध करने का एक तरीका है। आप --copyFromManifest विकल्प का उपयोग कर सकते हैं जो आपको s3distcp को एक मेनिफेस्ट फ़ाइल के साथ आपूर्ति करने की अनुमति देता है जिसमें सभी फाइल पथ (यहां तक ​​कि विभिन्न फ़ोल्डरों पर भी) होते हैं।

संबंधित मुद्दे