2016-10-06 11 views
0

私はSparkとPythonの新機能ですので、これはもっと経験豊かな人には分かります。lit()を使ってSparkで新しい列を作成する

1つの列を手動で作成しましたが、すべての値が「s」である別の列を作成したいとします。私が取っているコースでは、lit()関数を使うことを提案しています。しかし、私は私の人生のためにどのように考え出すことはできません。このコードは、このエラーを与える:「例外TypeError: 『列』オブジェクト呼び出すことはできません」

wordsDF = sqlContext.createDataFrame([('cat',), ('elephant',), ('rat',), ('rat',), ('cat',)], ['word']) 
wordsDF.show() 
from pyspark.sql.functions import lit, concat 
pluralDF = ([(wordsDF.word.lit(),'s',)], ['words', 's']) 
pluralDF.show() 

(私は右のそれを持っていることを確認した結果を表示するには、show関数を使用する私は実行する場合。ライン1と2は、それが動物の私のリストを示しているが、ライン4と5は失敗)

ヒントとして教師によって与えられたコードは、この(4行目)のためである:。

pluralDF = wordsDF.<FILL IN> 

すべてのヘルプ非常に感謝しています。ありがとう!

答えて

0

私はudfとして適用する関数を定義する必要があるかもしれないと思います。

それはのようになります。

from pyspark.sql.functions import udf 
def toPlural(singularStr): 
    singularStr + "s" 

wordsDF.withColumn("pluralNames", toPlural(wordsDF.col("_1"))).show() 
1

あなたはDataFrameの方法selectconcat機能でそれをも行うことができます。

pluralDF = wordsDF.select("*", concat(df['word'], lit('s')).alias("plural")) 
関連する問題