में विस्फोट करना मैं डेटाफ्रेम से बदलना चाहता हूं जिसमें प्रत्येक शब्द के साथ डेटाफ्रेम में शब्दों की सूचियां शामिल हैं।PySpark
मैं डेटाफ्रेम में कॉलम पर कैसे विस्फोट कर सकता हूं?
यहां मेरे कुछ प्रयासों के साथ एक उदाहरण दिया गया है जहां आप प्रत्येक कोड लाइन को असम्बद्ध कर सकते हैं और निम्न टिप्पणी में सूचीबद्ध त्रुटि प्राप्त कर सकते हैं। मैं स्पार्क 1.6.1 के साथ पायथन 2.7 में पायस्पार्क का उपयोग करता हूं।
from pyspark.sql.functions import split, explode
DF = sqlContext.createDataFrame([('cat \n\n elephant rat \n rat cat',)], ['word'])
print 'Dataset:'
DF.show()
print '\n\n Trying to do explode: \n'
DFsplit_explode = (
DF
.select(split(DF['word'], ' '))
# .select(explode(DF['word'])) # AnalysisException: u"cannot resolve 'explode(word)' due to data type mismatch: input to function explode should be array or map type, not StringType;"
# .map(explode) # AttributeError: 'PipelinedRDD' object has no attribute 'show'
# .explode() # AttributeError: 'DataFrame' object has no attribute 'explode'
).show()
# Trying without split
print '\n\n Only explode: \n'
DFsplit_explode = (
DF
.select(explode(DF['word'])) # AnalysisException: u"cannot resolve 'explode(word)' due to data type mismatch: input to function explode should be array or map type, not StringType;"
).show()
कृपया सलाह
जोड़ा गया जहां खंड के लिए धन्यवाद। – user1982118
एक और अधिक पूर्ण समाधान के लिए जो एक से अधिक स्तंभों की रिपोर्ट की जानी चाहिए, सामान्य 'चयन' यानी df.withColumn ('word', विस्फोट ('शब्द') के बजाय 'कॉलम' का उपयोग करें।) .show() यह गारंटी देता है कि डेटाफ्रेम में शेष सभी कॉलम अभी भी विस्फोट का उपयोग करने के बाद आउटपुट डेटाफ्रेम में मौजूद हैं। यह प्रत्येक कॉलम को निर्दिष्ट करने से भी आसान है जिसे चुनने की आवश्यकता है i.e .: df.select ('col1', 'col2', ..., 'colN', विस्फोट ('शब्द'))।() –