Her bir kelime kendi satırında bir DataFrame'e sözcük listelerini içeren bir DataFrame'den dönüştürmek istiyorum.PySpark'ta Patlatma
DataFrame'deki bir sütunda nasıl patlayabilirim?
Aşağıda, her bir kod satırını engelleyebileceğiniz ve aşağıdaki yorumda listelenen hatayı alabileceğiniz bazı girişimlerimden bir örnek verilmiştir. PySpark'ı Spark 1.6.1 ile Python 2.7'de kullanıyorum.
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()
Eklenen tümce için teşekkürler. – user1982118
Birden fazla sütunun bildirilmesi gereken durumları genelleştirebilen biraz daha eksiksiz bir çözüm için 'selectColumn' yerine basit 'select' kullanın: df.withColumn ('word', explode ('word')) .show() Bu, DataFrame'deki tüm sütunların patlatıldıktan sonra DataFrame çıkışında hala mevcut olduğunu garanti eder. Bu, aynı zamanda, seçilmesi gereken her bir sütunu belirtmekten de daha kolaydır: df.select ('col1', 'col2', ..., 'colN', ('word') patlat). –