直接在数据帧上使用 Spark Dataframe lambda
Spark Dataframe lambda on dataframe directly
我看到很多需要在 rdd.map 上使用 lambda 的示例。
只是想知道我们是否可以做类似以下的事情:
df.withColumn('newcol',(lambda x: x['col1'] + x['col2'])).show()
您必须将其包装在 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|
+---+---+---+
我看到很多需要在 rdd.map 上使用 lambda 的示例。
只是想知道我们是否可以做类似以下的事情:
df.withColumn('newcol',(lambda x: x['col1'] + x['col2'])).show()
您必须将其包装在 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|
+---+---+---+