使用UDF(User Defined Function)更新包含数组的Spark数据框列的步骤如下:
from pyspark.sql import SparkSession
from pyspark.sql.functions import udf
from pyspark.sql.types import ArrayType, StringType
spark = SparkSession.builder.getOrCreate()
def uppercase_array(arr):
return [x.upper() for x in arr]
# 注册UDF
uppercase_udf = udf(uppercase_array, ArrayType(StringType()))
data = [("John", ["apple", "banana", "orange"]),
("Alice", ["grape", "kiwi", "mango"]),
("Bob", ["pear", "pineapple", "watermelon"])]
df = spark.createDataFrame(data, ["name", "fruits"])
df.show()
输出:
+-----+-------------------+
| name| fruits|
+-----+-------------------+
| John|[apple, banana, or...|
|Alice| [grape, kiwi, mango]|
| Bob|[pear, pineapple, ...|
+-----+-------------------+
df = df.withColumn("fruits_uppercase", uppercase_udf(df["fruits"]))
df.show()
输出:
+-----+-------------------+-----------------+
| name| fruits| fruits_uppercase|
+-----+-------------------+-----------------+
| John|[apple, banana, or...|[APPLE, BANANA, ...|
|Alice| [grape, kiwi, mango]|[GRAPE, KIWI, MA...|
| Bob|[pear, pineapple, ...|[PEAR, PINEAPPLE...|
+-----+-------------------+-----------------+
在这个例子中,我们使用了一个自定义函数(UDF)uppercase_array
来将数组中的每个元素转换为大写字母。然后,我们使用withColumn
方法将新列fruits_uppercase
添加到数据框中,并将UDF应用于fruits
列。最后,我们打印出更新后的数据框。
请注意,这只是一个示例,您可以根据自己的需求定义和使用不同的UDF来更新包含数组的列。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云