有没有办法为PySpark中的pandas_udf设置最小批处理大小?

时间:2019-05-21 21:22:16

标签: python pandas apache-spark pyspark apache-arrow

我正在使用pandas_udf在我的Spark集群上应用机器学习模型,并且对预定义通过箭头发送到UDF的最小记录数感兴趣。

我按照数据砖教程中的大部分UDF ... https://docs.databricks.com/applications/deep-learning/inference/resnet-model-inference-tensorflow.html

在教程中,我将Spark会议设置为具有最大批处理大小并启用了箭头。我可以轻松设置最大批处理大小,但是我想知道是否有类似的方法来设置UDF将处理的最小批处理大小?

spark = SparkSession.builder.appName('App').getOrCreate()

spark.conf.set("spark.sql.execution.arrow.enabled", "true")

spark.conf.set('spark.sql.execution.arrow.maxRecordsPerBatch', PyArrowBatchSize)

我正在运行Spark版本2.4.3和python 3.6.0。

1 个答案:

答案 0 :(得分:0)

无法在Spark docs中设置最小批处理大小,但是在这种情况下,max有点误导。类似于“剩余之前的批量大小”。

Ex:如果数据集中有100132行,而maxRecordsPerBatch为10000,则将得到10个大小为10000的批次,其余为132个大小。 (如果您有多个执行程序,则可能会有更多的批次剩余,这取决于拆分方式。)

您知道min的批量大小取决于剩余数量,否则所有的批量大小都将恰好是最小的批量大小。