pyspark 返回pandas_udf spark内部的Pandas Series

6yoyoihd  于 2024-01-06  发布在  Spark
关注(0)|答案(2)|浏览(152)

在Apache Spark上,我有一个pandas_udf函数,它应该返回一个pd。系列如何将其存档?
我试探着:

  1. @pandas_udf(ArrayType(LongType()), PandasUDFType.SCALAR_ITER) # Only works with spark 3.0
  2. def udf(iterator):
  3. ...
  4. return pd.Series([1,2,3,4,5])

字符串
这给出了例外:

  1. pyarrow.lib.ArrowNotImplementedError: NumPyConverter doesn't implement <list<item: int64>> conversion.

ws51t4hk

ws51t4hk1#

如果你想实现这样的目标:

  1. +---+-----+---------------+
  2. | id|value| sample_col|
  3. +---+-----+---------------+
  4. | 1| 1|[1, 2, 3, 4, 5]|
  5. | 2| 4|[1, 2, 3, 4, 5]|
  6. | 3| 9|[1, 2, 3, 4, 5]|
  7. | 4| 16|[1, 2, 3, 4, 5]|
  8. | 5| 25|[1, 2, 3, 4, 5]|
  9. +---+-----+---------------+

字符串
那么下面就可以了。

  1. @pandas_udf(T.ArrayType(T.IntegerType()))
  2. def _udf(iterator:pd.Series) -> pd.Series:
  3. result = pd.Series([[1,2,3,4,5] for _ in range(len(iterator))])
  4. return result
  1. sdf.withColumn('sample_col',_udf((F.col('value')))).show()

的数据

展开查看全部
sgtfey8w

sgtfey8w2#

这是我这边的一个错误。来自pandas udf的模式类型

相关问题