2014-10-11 11 views
8

अमेज़न S3 फ़ाइल आकार की सीमा इस announcement के अनुसार 5T माना जाता है, लेकिन जब एक 5G फ़ाइलEntityTooLarge त्रुटि अमेज़न S3 के लिए एक 5G फ़ाइल को अपलोड करने

'/mahler%2Fparquet%2Fpageview%2Fall-2014-2000%2F_temporary%2F_attempt_201410112050_0009_r_000221_2222%2Fpart-r-222.parquet' XML Error Message: 
    <?xml version="1.0" encoding="UTF-8"?> 
    <Error> 
    <Code>EntityTooLarge</Code> 
    <Message>Your proposed upload exceeds the maximum allowed size</Message> 
    <ProposedSize>5374138340</ProposedSize> 
    ... 
    <MaxSizeAllowed>5368709120</MaxSizeAllowed> 
    </Error> 

यह बनाता है अपलोड करने मैं निम्न त्रुटि हो रही है ऐसा लगता है कि एस 3 केवल 5 जी अपलोड स्वीकार कर रहा है। मैं SchemRDD.saveAsParquetFile विधि का उपयोग कर एक पैराक्वेट डेटा सेट लिखने के लिए अपाचे स्पार्क एसक्यूएल का उपयोग कर रहा हूं। पूर्ण स्टैक ट्रेस

org.apache.hadoop.fs.s3.S3Exception: org.jets3t.service.S3ServiceException: S3 PUT failed for '/mahler%2Fparquet%2Fpageview%2Fall-2014-2000%2F_temporary%2F_attempt_201410112050_0009_r_000221_2222%2Fpart-r-222.parquet' XML Error Message: <?xml version="1.0" encoding="UTF-8"?><Error><Code>EntityTooLarge</Code><Message>Your proposed upload exceeds the maximum allowed size</Message><ProposedSize>5374138340</ProposedSize><RequestId>20A38B479FFED879</RequestId><HostId>KxeGsPreQ0hO7mm7DTcGLiN7vi7nqT3Z6p2Nbx1aLULSEzp6X5Iu8Kj6qM7Whm56ciJ7uDEeNn4=</HostId><MaxSizeAllowed>5368709120</MaxSizeAllowed></Error> 
     org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore.storeFile(Jets3tNativeFileSystemStore.java:82) 
     sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     java.lang.reflect.Method.invoke(Method.java:606) 
     org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82) 
     org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59) 
     org.apache.hadoop.fs.s3native.$Proxy10.storeFile(Unknown Source) 
     org.apache.hadoop.fs.s3native.NativeS3FileSystem$NativeS3FsOutputStream.close(NativeS3FileSystem.java:174) 
     org.apache.hadoop.fs.FSDataOutputStream$PositionCache.close(FSDataOutputStream.java:61) 
     org.apache.hadoop.fs.FSDataOutputStream.close(FSDataOutputStream.java:86) 
     parquet.hadoop.ParquetFileWriter.end(ParquetFileWriter.java:321) 
     parquet.hadoop.InternalParquetRecordWriter.close(InternalParquetRecordWriter.java:111) 
     parquet.hadoop.ParquetRecordWriter.close(ParquetRecordWriter.java:73) 
     org.apache.spark.sql.parquet.InsertIntoParquetTable.org$apache$spark$sql$parquet$InsertIntoParquetTable$$writeShard$1(ParquetTableOperations.scala:305) 
     org.apache.spark.sql.parquet.InsertIntoParquetTable$$anonfun$saveAsHadoopFile$1.apply(ParquetTableOperations.scala:318) 
     org.apache.spark.sql.parquet.InsertIntoParquetTable$$anonfun$saveAsHadoopFile$1.apply(ParquetTableOperations.scala:318) 
     org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:62) 
     org.apache.spark.scheduler.Task.run(Task.scala:54) 
     org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:177) 
     java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     java.lang.Thread.run(Thread.java:745) 

अपलोड सीमा अभी भी 5T ​​है है? अगर मुझे यह त्रुटि मिल रही है और मैं इसे कैसे ठीक करूं?

उत्तर

12

ऑब्जेक्ट आकार 5 टीबी तक सीमित है। अपलोड आकार अब भी है 5 जीबी, मैनुअल में बताया गया है:

  • अपलोड वस्तुओं में:

    डेटा अपलोड किए जा रहे के आकार पर निर्भर करता है, अमेज़न S3 निम्नलिखित विकल्प प्रदान करता है एक एकल ऑपरेशन- एक PUT ऑपरेशन के साथ आप 5 जीबी आकार तक ऑब्जेक्ट्स अपलोड कर सकते हैं।

  • भागों में ऑब्जेक्ट अपलोड करें- मल्टीपार्ट अपलोड एपीआई का उपयोग करके आप बड़ी वस्तुओं को 5 टीबी तक अपलोड कर सकते हैं।

http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadingObjects.html

एक बार जब आप एक बहुखण्डीय अपलोड करते हैं, S3 पुष्टि करता है और भागों recombines, और तुम तो, एस 3 में एक भी वस्तु है आकार में 5TB करने के लिए, कि एक के रूप में डाउनलोड किया जा सकता सिंगल एंटाइटेलिटी, एक HTTP GET अनुरोध के साथ ... लेकिन अपलोडिंग संभवतः 5 जीबी से छोटी फ़ाइलों पर भी तेज है, क्योंकि आप समानांतर में भागों को अपलोड कर सकते हैं और यहां तक ​​कि किसी भी भाग के अपलोड को पुनः प्रयास कर सकते हैं जो पहले प्रयास में सफल नहीं हुआ ।

3

चाल आमतौर पर यह पता लगाना प्रतीत होता है कि मल्टीपार्ट अपलोड करने के लिए S3 को कैसे बताना है।

hdfs dfs -Dfs.s3n.awsAccessKeyId=ACCESS_KEY -Dfs.s3n.awsSecretAccessKey=SUPER_SECRET_KEY -Dfs.s3n.multipart.uploads.enabled=true -cp hdfs:///path/to/source/data s3n://bucket/folder/ 

और आगे विन्यास यहां पाया जा सकता: S3 के लिए HDFS से डेटा की प्रतिलिपि के लिए, यह s3n फ़ाइल सिस्टम का उपयोग और विशेष रूप से fs.s3n.multipart.uploads.enabled=true

इस के साथ बहुखण्डीय अपलोड सक्रिय करने के द्वारा किया जा सकता की तरह किया जा सकता है https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html

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