我们可以在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()

上一篇:python-将文件名添加到WholeTextFiles上的RDD行


下一篇:python-在pyspark的客户端模式下如何设置火花驱动程序maxResultSize?