2016-02-19 8 views
7

Tek bir sütunda bir eylem gerçekleştirmek istiyorum. Maalesef, bu sütunu dönüştürdüğümde artık artık gelen bir veri karesinin parçası değil, bir Sütun nesnesi. Bu şekilde toplanamaz.Spark'de tek bir sütunu nasıl toplarım?

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

nasıl tek bir sütun üzerinde collect() işlevini kullanabilirsiniz:

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

Bu, aşağıdaki hata üretir: Burada

örneğidir?

cevap

11
Sadece seçme

ve flatMap:

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

Düzenleme 23/1/2017

Kıvılcım başlayarak Eğer flatMap

kullanmak açıkça sırayla .rdd belirtmeniz gerekir 2.0.0
df.select("array").rdd.flatMap(lambda x: x).collect() 
+0

bunun yerine seçiminizi kullanın Alt kümeleme, bunu, bir Sütun – Michal

+0

Sağ yerine bir sütun veri çerçevesine dönüştürür. 'Column' sadece bir SQL DSL ifadesi değil, bağımsız bir veri yapısıdır. – zero323

+1

Kıvılcım 2.0'daki eşdeğer nedir? DataFrame – ThatDataGuy

İlgili konular