我们可以在Spark DataFrame列中使用Pandas函数吗?如果是这样,怎么办?
作者:互联网
我有一个名为“ pd_df”的熊猫数据框.
我想修改它的column,所以我做这样的事情:
import pandas as pd
pd_df['notification_dt'] = pd.to_datetime(pd_df['notification_dt'], format="%Y-%m-%d")
有用.
在同一数据库上,我创建了一个名为“ spark_df”的spark数据框.
我希望列上的相同函数(pd.to_datatime)执行相同的操作.所以我做到了.
from pyspark.sql.functions import UserDefinedFunction
from pyspark.sql.types import TimestampType
udf = UserDefinedFunction(lambda x: pd.to_datetime(x, format="%Y-%m-%d"), TimestampType())
spark_df2 = spark_df.withColumn("notification_dt1", (udf(spark_df["notification_dt"])))
据我说,它应该工作.但是在
spark_df.show()
一分钟左右后,我遇到以下错误:
解决方法:
因此,将其修复.
udf = UserDefinedFunction(lambda x: pd.to_datetime(x, format="%Y-%m-%d"), TimestampType())
应该
udf = UserDefinedFunction(lambda x: str(pd.to_datetime(x, format="%Y-%m-%d")), TimestampType())
基本上是无法将结果转换为TimestampType()
标签:apache-spark,pandas,pyspark,python 来源: https://codeday.me/bug/20191118/2028976.html