稳重的枕头 · 私募基金排名_最新私募基金排名信息 - 雪球· 2 月前 · |
逃课的风衣 · 在Word里,一个完美目录是怎么来的? - ...· 2 月前 · |
闷骚的冲锋衣 · 现代轻奢,简约清爽,光明楸韵让家中充满高级感 ...· 5 月前 · |
玩手机的啄木鸟 · 视频:《战神纪》定档预告曝光群星璀璨齐聚草原 ...· 1 年前 · |
不拘小节的毛衣 · 戴文军:如何用边缘计算+边缘存储打造新一代智 ...· 1 年前 · |
我正在一个Scala + Spark项目中工作,在该项目中,我们将数据从文件加载到PostgreSQL中。它在独立模式下使用jdbc.write在本地运行良好,测试数据很小。
但是由于生产数据是巨大的,我想使用一个集群,每个执行者拥有多个工作人员和一个逻辑处理器核心。
考虑到这一点,我如何在集群中的所有可用核之间划分数据?
谢谢!
PS:使用Scala2.13.9和Spark3.3.0
如果您正在使用动态分配,并且您的集群被并发作业使用,那么可能很难得到与您的作业可能使用的核数目完全相等的分区数,因为您不会预先知道这个数目,并且无法动态计算它。
您可以尝试找出一些任意的数字,并将numPartitions jdbc参数设置为要在写时使用的分区数。使用此参数,Spark将在写入之前重新划分此数据集,您将得到写入上的任务数量等于numPartitions。记住,用并行=1 jdbc连接编写的每个任务都要注意,您可能会溢出您的PostreSQL。
numPartitions (none)表读取和 写入 中可用于并行处理的最大分区数。这也决定了 并发JDBC连接 的最大数量。如果要写入的分区数超过此限制,则在编写之前调用numPartitions将其减少到此限制。 read/write
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
扫码关注腾讯云开发者
领取腾讯云代金券
稳重的枕头 · 私募基金排名_最新私募基金排名信息 - 雪球 2 月前 |