我们可以在Spark DataFrame列中使用Pandas函数吗?如果是这样,怎么样?

时间:2016-06-10 21:46:01

标签: python pandas apache-spark pyspark

我有一个名为" pd_df"。

的pandas数据框

我想修改它的专栏,所以我做了类似的事情:

    import pandas as pd

    pd_df['notification_dt'] = pd.to_datetime(pd_df['notification_dt'], format="%Y-%m-%d")

有效。

在同一个数据库中,我创建了一个名为" spark_df"

的火花数据帧

我想在它的列上执行相同的功能(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()

一分钟后我遇到以下错误: enter image description here

1 个答案:

答案 0 :(得分:3)

所以,修好了。

 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()