Spark不能腌制method_descriptor

Spark不能腌制method_descriptor,第1张

Spark不能腌制method_descriptor

Spark尝试序列化连接对象,以便可以在执行程序中使用,这肯定会失败,因为反序列化的db连接对象无法将读取/写入权限授予其他作用域(甚至计算机)。通过尝试广播连接对象可以重现该问题。对于这种情况,在序列化I
/ O对象时存在问题。

通过连接到map函数内部的数据库,部分解决了该问题。由于map函数中每个RDD元素的连接过多,因此我不得不切换到分区处理以将db连接从20k减少到大约8-64(基于分区的数量)。Spark开发人员应考虑为执行程序创建初始化函数/脚本,以避免出现此类死胡同问题。

假设我让每个节点都执行了此init函数,然后每个节点都将连接到数据库(某些conn池或单独的zookeeper节点),因为init函数和map函数将共享相同的作用域,然后出现问题不见了,所以您编写的代码比我发现的解决方法快。在执行结束时,spark将释放/卸载这些定义的变量,程序将结束。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5631652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存