【发布时间】:2018-09-08 12:49:12
【问题描述】:
在转换导致创建或加载昂贵的资源(例如 - 对外部服务进行身份验证或创建数据库连接)的情况下,使用 map over map partitions 可以显着提升性能。
mapPartition 允许我们为每个分区初始化一次昂贵的资源,而不是像标准 map 那样每行初始化一次。
但是,如果我使用数据帧,我应用自定义转换的方式是指定用户定义的函数,这些函数逐行操作 - 所以我失去了使用 mapPartitions 对每个块执行一次繁重的工作的能力。
在 spark-sql/dataframe 中有解决方法吗?
更具体:
我需要对一堆文档进行特征提取。我有一个输入文档并输出向量的函数。
计算本身涉及初始化与外部服务的连接。我不想或不需要为每个文档初始化它。这在规模上具有不小的开销。
【问题讨论】:
标签: apache-spark optimization pyspark user-defined-functions