直接在数据帧上触发数据帧 lambda
Posted
技术标签:
【中文标题】直接在数据帧上触发数据帧 lambda【英文标题】:Spark Dataframe lambda on dataframe directly 【发布时间】:2021-10-26 04:19:32 【问题描述】:我看到很多示例需要在 rdd.map 上使用 lambda。 只是想知道我们是否可以执行以下操作:
df.withColumn('newcol',(lambda x: x['col1'] + x['col2'])).show()
【问题讨论】:
你需要执行什么操作?如果你只是想总结两列,那么你可以不使用 lambda 直接完成。 我只是想知道是否可以直接使用 lambda over dataframe 直接完成,而不需要 rdd 【参考方案1】:您必须将其包装在 UDF 中并提供您希望应用 lambda 的列。
例子:
from pyspark.sql import SparkSession
import pyspark.sql.functions as F
if __name__ == "__main__":
spark = SparkSession.builder.getOrCreate()
data = ["a": 1, "b": 2]
df = spark.createDataFrame(data)
df.withColumn("c", F.udf(lambda x, y: x + y)("a", "b")).show()
结果:
+---+---+---+
| a| b| c|
+---+---+---+
| 1| 2| 3|
+---+---+---+
【讨论】:
哇~~这是一个非常酷的演示。非常感谢 @mytabi 不客气!如果这回答了您的问题,请将其标记为已回答。以上是关于直接在数据帧上触发数据帧 lambda的主要内容,如果未能解决你的问题,请参考以下文章