2015-04-29 14 views
7

मैं बाद में डीबी में परिणाम आयात करने के लिए पाठ फ़ाइल के रूप में आउटपुट को सहेजने के लिए saveAsTextFile(path) का उपयोग कर रहा हूं। आउटपुट इस तरह कुछ दिखता है:आरडीडी पर एएसटेक्स्टफाइल को सहेजते समय रिकॉर्ड के चारों ओर कोष्ठक को कैसे हटाएं [(स्ट्रिंग, इंट)]?

(value1, value2) 

ब्रांड्स को कैसे हटाएं?

उत्तर

12

आप जिसके बाद बहुत ही बुनियादी है की कोशिश कर सकते हैं:

rdd.map(x => x._1 + "," + x._2).saveAsTextFile(path) 

आप बस अपनी RDD नक्शा [(ए, बी)] के लिए एक RDD [स्ट्रिंग] और उसे सहेजें।

+0

@ आशीष यदि आपके पास कोई टिप्पणी है, तो कृपया टिप्पणी बॉक्स का उपयोग करें और उत्तर संपादित न करें! साथ ही आपके द्वारा संपादित किए गए कोड को यहां प्रश्न से संबंधित नहीं है। आपका कोड आरडीडी [पंक्ति] के साथ काम कर रहा है जो यहां मामला नहीं है। – eliasah

1

सीधे एक टुपल प्रिंट करने के बजाय mkString का उपयोग करके स्पष्ट रूप से प्रयास करें।

2

जावा दुनिया में लोगों के लिए, यहां एक समाधान है जो डेटाफ्रेम के साथ शुरू होता है, इसे आरडीडी में परिवर्तित करता है और फिर परिणाम लिखता है। आरडीडी की पंक्तियों को मानचित्र समारोह के माध्यम से पारित किया जाता है जो पंक्ति को एक स्ट्रिंग में परिवर्तित करता है।

public void write(DataFrame output) { 
    String path = "your_path_goes_here"; 
    output 
     .toJavaRDD() 
     .map(new BracketRemover()) 
     .saveAsTextFile(path); 
} 

protected class BracketRemover implements Function<Row, String> { 
    public String call(Row r) { 
     return r.mkString(","); 
    } 
} 
4

saveAsTextFile उपयोग map(x => x.mkString(",")

rdd.map(x => x.mkString(",").saveAsTextFile(path)

आउटपुट बनाने ब्रैकेट नहीं होगा पहले।

0

आप rdd.map (आरईसी => rec.productIterator.mkString (",") का उपयोग करके RDD कर सकते हैं सहेजें। SaveAsTextFile (पथ) परिणामस्वरूप डाटासेट कोष्ठकों नहीं होगा।

0

मैं जानता हूँ कि यह टैग है स्काला, लेकिन सिर्फ मामले में अजगर के पक्ष में जोड़ने के लिए किसी को भी उत्सुक है। RDD बनाएँ और बचाने के रूप में है

rdd_of_tuples = sc.parallelize([('one',1),('two',2)]) 
rdd_of_tuples.saveAsTextFile('/user/cloudera/rdd_of_tuples') 

यह इस तरह पंक्तियों की बचत होगी के रूप में आप का उल्लेख

('one', 1) 

लेकिन यह

rdd_of_text = rdd_of_tuples.map(lambda (x,y): x + ',' + str(y)).saveAsTextFile('/user/cloudera/rdd_of_text') 

काम करना चाहिए और अगर आप मिलना चाहिए

one,1 

ध्यान दें कि इस विशेष मामले में आप श्रृंखलाबद्ध के लिए प्रकार के बारे में पता होना करने के लिए (str जाँच (जरूरत है यदि आप निम्न कार्य वाई)), अन्यथा आपको निम्नलिखित अपवाद

TypeError: cannot concatenate 'str' and 'int' objects 
संबंधित मुद्दे