Pandas UDF 返回没有数据的数据框

我正在尝试在 pyspark (Spark 2.4.5) 中应用非常简单的 Pandas UDF,但它对我不起作用。例子:


pyspark --master local[4] --conf "spark.pyspark.python=/opt/anaconda/envs/bd9/bin/python3" --conf "spark.pyspark.driver.python=/opt/anaconda/envs/bd9/bin/python3"




 >>> my_df = spark.createDataFrame(

...     [

...         (1, 0),

...         (2, 1),

...         (3, 1),

...     ],

...     ["uid", "partition_id"]

... )


from pyspark.sql.types import StructType, StructField, StringType


schema = StructType([StructField("uid", StringType())])


from pyspark.sql.functions import pandas_udf, PandasUDFType

import pandas


>>> @pandas_udf(schema, PandasUDFType.GROUPED_MAP)

... def apply_model(sample_df):

...     print(sample_df)

...     return pandas.DataFrame({"uid": sample_df["uid"]})

...


>>> result = my_df.groupBy("partition_id").apply(apply_model)

>>> result.show()

   uid  partition_id

0    1             0

[Stage 13:==================================================>    (92 + 4) / 100]   uid  partition_id

0    2             1

1    3             1

+---+

|uid|

+---+

|  |

|  |

|  |

+---+

不知何故 uid 没有反映在结果中。


你能说我在这里缺少什么吗?


梵蒂冈之花
浏览 119回答 1
1回答

婷婷同学_

抱歉,不好意思,我在模式中写错了类型,应该是 LongType() 而不是 StringType()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python