【发布时间】:2020-04-06 14:17:18
【问题描述】:
我有一个包含 2 列的数据框:account_id 和 email_address,现在我想再添加一列 updated_email_address,我在 email_address 上调用一些函数来获取 updated_email_address。这是我的代码:
def update_email(email):
print("== email to be updated: " + email)
today = datetime.date.today()
updated = substring(email, -8, 8) + str(today.strftime('%m')) + str(today.strftime('%d')) + "_updated"
return updated
df.withColumn('updated_email_address', update_email(df.email_address))
但结果显示updated_email_address 列为空:
+---------------+--------------+---------------------+
|account_id |email_address |updated_email_address|
+---------------+--------------+---------------------+
|123456gd7tuhha |abc@test.com |null |
|djasevneuagsj1 |cde@test.com |null |
+---------------+--------------+---------------+
在函数updated_email内部打印出来:
Column<b'(email_address + == email to be udpated: )'>
它还将df的列数据类型显示为:
dfData:pyspark.sql.dataframe.DataFrame
account_id:string
email_address:string
updated_email_address:double
为什么updated_email_address 列类型是double?
【问题讨论】:
-
您需要使用 UDF(用户定义函数)。 docs.databricks.com/spark/latest/spark-sql/udf-python.html
标签: apache-spark pyspark apache-spark-sql user-defined-functions