pyspark - PySpark Iterator[pd.Series] UDF 中的输入列如何拆分成块?
问题描述
PySpark 3.0 引入了矢量化 Pandas UDF。其中一个示例显示了一个 UDF 注释为Iterator[pd.Sereis] -> Iterator[pd.Series]
from typing import Iterator
import pandas as pd
from pyspark.sql.functions import pandas_udf
pdf = pd.DataFrame([1, 2, 3], columns=["x"])
df = spark.createDataFrame(pdf)
# Declare the function and create the UDF
@pandas_udf("long")
def plus_one(iterator: Iterator[pd.Series]) -> Iterator[pd.Series]:
for x in iterator:
yield x + 1
df.select(plus_one("x")).show()
# +-----------+
# |plus_one(x)|
# +-----------+
# | 2|
# | 3|
# | 4|
# +-----------+
我的理解是输入列[1,2,3]
被拆分成块(比如说[1], [2], [3]
然后连接回列。
x
是什么决定了每次迭代中大小的大小?是否可配置?如果您不需要同时加载整个列,这种模式是否仅用于节省内存?
解决方案
推荐阅读
- xml - 如何执行此 XPath 查询?
- umbraco - Windows 2016 Standard Server 上 Umbraco 版本 8.4.0 的问题
- matlab - Halton 在 MATLAB 中围绕预先指定的点设置
- tensorflow - 如何在张量流中获得每类的概率?图像分类器
- c - 如何编译具有多个单词名称的ac文件
- azure-devops - XDT 转换不适用于 Azure 上的 applicationHost.xdt - 环境变量被忽略
- amazon-web-services - 如何使用弹性 beantalk 加密负载均衡器和 Web 服务器之间的流量
- javascript - 为什么没有引号它不给出错误?
- python - 将字符串转换为“M:S”时间格式
- c++ - 在 Mac 上使用 make 构建时,如何解决这个奇怪的“没有这样的文件或目录”错误?