2016-02-19 6 views
7

मैं एक कॉलम पर एक क्रिया करना चाहता हूं। दुर्भाग्य से, मैं उस कॉलम को बदलने के बाद, अब यह डेटाफ्रेम का हिस्सा नहीं है, लेकिन यह कॉलम ऑब्जेक्ट से आया है। इस प्रकार, इसे एकत्र नहीं किया जा सकता है।मैं स्पार्क में एक कॉलम कैसे एकत्र करूं?

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'Column' object is not callable 

मैं कैसे एक स्तंभ पर collect() फ़ंक्शन का उपयोग कर सकते हैं:

df = sqlContext.createDataFrame([Row(array=[1,2,3])]) 
df['array'].collect() 

यह निम्न त्रुटि पैदा करता है:

यहाँ एक उदाहरण है?

उत्तर

11

बस चुनें और flatMap:

df.select("array").flatMap(lambda x: x).collect() 
## [[1, 2, 3]] 

संपादित 23/1/2017

स्पार्क से शुरू 2.0.0 आप स्पष्ट रूप से क्रम में .rdd निर्दिष्ट करने के लिए flatMap

उपयोग करने की आवश्यकता
df.select("array").rdd.flatMap(lambda x: x).collect() 
+0

इसलिए इसके बजाय चयन का उपयोग करना सबसेटिंग का अनिवार्य रूप से कॉलम – Michal

+0

के बजाय इसे एक कॉलम डेटाफ्रेम में बदल देता है। 'कॉलम' सिर्फ एक एसक्यूएल डीएसएल अभिव्यक्ति है जो एक स्टैंडअलोन डेटा संरचना नहीं है। – zero323

+1

स्पार्क 2.0 में समतुल्य क्या है? मैं DataFrame – ThatDataGuy

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