使用 lit() 在 Spark 中创建新列
Creating new column in Spark using lit()
我对 Spark 和 Python 还很陌生,所以对于更有经验的人来说这可能真的很明显。
我已经手动创建了一列,并且想要创建另一列,其中所有值都是 's'。我正在学习的课程建议使用 lit() 函数。但是,我无法为我的生活弄清楚如何。此代码给出此错误:"TypeError: 'Column' object is not callable"
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>
非常感谢任何帮助。谢谢!
您也可以使用 DataFrame
的方法 select
和 concat 函数。
pluralDF = wordsDF.select("*", concat(df['word'], lit('s')).alias("plural"))
尝试:
pluralDF = wordsDF.withColumn("words", lit('s'))
尝试以下操作:
import pyspark.sql.functions as F
wordsDF = sqlContext.createDataFrame([('cat',), ('elephant',), ('rat',), ('rat',), ('cat', )], ['word']) \
.withColumns('words', F.lit('s'))
如果要将 's' 添加到字符串末尾,请尝试:
import pyspark.sql.functions as F
wordsDF = sqlContext.createDataFrame([('cat',), ('elephant',), ('rat',), ('rat',), ('cat', )], ['word']) \
.withColumns('words', F.lit('s')) \
.withColumns('words', F.concat(F.col('_1'), F.col('words')))
我对 Spark 和 Python 还很陌生,所以对于更有经验的人来说这可能真的很明显。
我已经手动创建了一列,并且想要创建另一列,其中所有值都是 's'。我正在学习的课程建议使用 lit() 函数。但是,我无法为我的生活弄清楚如何。此代码给出此错误:"TypeError: 'Column' object is not callable"
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>
非常感谢任何帮助。谢谢!
您也可以使用 DataFrame
的方法 select
和 concat 函数。
pluralDF = wordsDF.select("*", concat(df['word'], lit('s')).alias("plural"))
尝试:
pluralDF = wordsDF.withColumn("words", lit('s'))
尝试以下操作:
import pyspark.sql.functions as F
wordsDF = sqlContext.createDataFrame([('cat',), ('elephant',), ('rat',), ('rat',), ('cat', )], ['word']) \
.withColumns('words', F.lit('s'))
如果要将 's' 添加到字符串末尾,请尝试:
import pyspark.sql.functions as F
wordsDF = sqlContext.createDataFrame([('cat',), ('elephant',), ('rat',), ('rat',), ('cat', )], ['word']) \
.withColumns('words', F.lit('s')) \
.withColumns('words', F.concat(F.col('_1'), F.col('words')))