Python 在数据帧上应用映射函数
我刚刚开始使用databricks/pyspark。我正在使用python/spark 2.1。我已将数据上载到表中。此表是一列字符串。我希望对列中的每个元素应用一个映射函数。我将表加载到数据帧中:Python 在数据帧上应用映射函数,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我刚刚开始使用databricks/pyspark。我正在使用python/spark 2.1。我已将数据上载到表中。此表是一列字符串。我希望对列中的每个元素应用一个映射函数。我将表加载到数据帧中: df = spark.table("mynewtable") 我能看到的唯一方法是其他人说,将其转换为RDD以应用映射函数,然后返回到dataframe以显示数据。但这会导致作业中止阶段失败: df2 = df.select("_c0").rdd.flatMap(lambda x: x.appen
df = spark.table("mynewtable")
我能看到的唯一方法是其他人说,将其转换为RDD以应用映射函数,然后返回到dataframe以显示数据。但这会导致作业中止阶段失败:
df2 = df.select("_c0").rdd.flatMap(lambda x: x.append("anything")).toDF()
我只想对表中的数据应用任何类型的映射函数。
例如,向列中的每个字符串添加一些内容,或者对字符执行拆分,然后将其放回数据帧中,这样我就可以.show()或显示它 您不能:
- 使用
,因为它将展平flatMap
行
- 无法使用
,因为:追加
或元组
没有附加方法行
- 针对副作用执行
(如果集合中存在),并返回append
None
:
df.withColumn("foo", lit("anything"))
但是map
也应该起作用:
df.select("_c0").rdd.flatMap(lambda x: x + ("anything", )).toDF()
编辑(给出评论):
您可能需要一个udf
from pyspark.sql.functions import udf
def iplookup(s):
return ... # Some lookup logic
iplookup_udf = udf(iplookup)
df.withColumn("foo", iplookup_udf("c0"))
默认返回类型是StringType
,因此如果您需要其他内容,您应该调整它。我有一个后续问题@Alper t。Turker在pyspark udf或rdd处理中哪个性能最好?