发布
社区首页 >问答首页 >分区JDBC在Spark中写入

分区JDBC在Spark中写入
EN

Stack Overflow用户
提问于 2022-10-12 10:53:24
回答 1查看 37关注 0票数 1

我正在一个Scala + Spark项目中工作,在该项目中,我们将数据从文件加载到PostgreSQL中。它在独立模式下使用jdbc.write在本地运行良好,测试数据很小。

但是由于生产数据是巨大的,我想使用一个集群,每个执行者拥有多个工作人员和一个逻辑处理器核心。

考虑到这一点,我如何在集群中的所有可用核之间划分数据?

谢谢!

PS:使用Scala2.13.9和Spark3.3.0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-13 05:27:19

如果您正在使用动态分配,并且您的集群被并发作业使用,那么可能很难得到与您的作业可能使用的核数目完全相等的分区数,因为您不会预先知道这个数目,并且无法动态计算它。

您可以尝试找出一些任意的数字,并将numPartitions jdbc参数设置为要在写时使用的分区数。使用此参数,Spark将在写入之前重新划分此数据集,您将得到写入上的任务数量等于numPartitions。记住,用并行=1 jdbc连接编写的每个任务都要注意,您可能会溢出您的PostreSQL。

火花jdbc

numPartitions (none)表读取和写入中可用于并行处理的最大分区数。这也决定了并发JDBC连接的最大数量。如果要写入的分区数超过此限制,则在编写之前调用numPartitions将其减少到此限制。读写

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74040660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档