2016-10-06 2 views
0

Я довольно новичок в Spark и Python, поэтому, возможно, это действительно очевидно для кого-то более опытного.Создание нового столбца в Spark с использованием lit()

Я создал один столбец вручную, и хочу создать еще один столбец, в котором все значения «S». Курс, который я беру, предполагает использование функции lit(). Однако я не могу, чтобы жизнь меня определяла, как. Этот код дает эту ошибку: «TypeError:„Column“объект не вызываемая».

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() 

(я использую функцию шоу, чтобы показать результат, чтобы убедиться, что я получил это право Если бы я только бежать линия 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

Вы также могли бы сделать это с помощью метода select и concat функции DataFrame «s.

pluralDF = wordsDF.select("*", concat(df['word'], lit('s')).alias("plural"))