2017-10-28 19 views
5

ऐसा लगता है कि इसमैं कैसे बाल्टी फ़ाइलों को एक बाल्टीबी/सॉर्टकी मान एस 3 में सहेज सकता हूं?

 df 
      .write() 
      .option("mode", "DROPMALFORMED") 
      .option("compression", "snappy") 
      .mode("overwrite") 
      .bucketBy(32,"column").sortBy("column") 
      .parquet("s3://...."); 

बाहर त्रुटि जाएगा त्रुटि

Exception in thread "main" org.apache.spark.sql.AnalysisException: 'save' does not support bucketing right now; at org.apache.spark.sql.DataFrameWriter.assertNotBucketed(DataFrameWriter.scala:314) 

मैं देख रहा हूँ saveAsTable("myfile") अभी भी समर्थित है, लेकिन यह केवल स्थानीय रूप से लिखते हैं के साथ। मैं saveAsTable(...) आउटपुट कैसे ले सकता हूं और नौकरी के बाद इसे एस 3 पर रखूंगा?

+0

आप 'पुनः विभाजन का उपयोग कर माना जाता है (32) 'और' विभाजन द्वारा ("कॉलम") '? –

+0

स्तंभ द्वारा प्रति नई फाइल बनाता है, बाल्टी एक हैश कुंजी बनाता है और समान रूप से एन बाल्टी में वितरित करता है। वे अलग-अलग चीजें करते हैं। मेरे मामले में कॉलम मैं बाल्टी चाहता हूं उपयोगकर्ता आईडी है, जो कि सभी अद्वितीय है। मैं वास्तव में क्या चाहता हूं एक सॉर्टकी/इंडेक्स है, जो बाल्टीबी प्रदान करता है। – ForeverConfused

उत्तर

3
You Can use like below: 

    df 
       .write() 
       .option("mode", "DROPMALFORMED") 
       .option("compression", "snappy") 
       .option("path","s3://....") 
       .mode("overwrite") 
       .format("parquet") 
       .bucketBy(32,"column").sortBy("column") 
       .saveAsTable("tableName"); 

यह एक बाहरी तालिका S3 स्थान .option की ओर इशारा करते पैदा करेगा ("पथ", "S3: // ....") यहाँ पकड़ है

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