spark如何更新mysql已有数据

destiny023 2016-11-10 09:31:15
Dataset<Row>.write().mode(SaveMode.Append).jdbc()
往数据库写数据只有Append,Overwrite,ErrorIfExists,Ignore这几种模式,怎样更新原来的数据,一般是怎么处理的
...全文
1755 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
destiny023 2016-11-10
  • 打赏
  • 举报
回复
看样子 最好是只做insert操作了
LinkSe7en 2016-11-10
  • 打赏
  • 举报
回复
引用 3 楼 SomebodyTOLove 的回复:
foreachPartition算子内每条记录查询一次是否有该主键,这种性能如何呢,假如目标表有几千万的数据,这样性能会不会很差?
跑批慢是肯定的。我一个百万级的数据进行全量更新,大概要15-20分钟。MySQL单机的吞吐量就放在这。。。如果要追求速度,目标表又没有其他读取依赖,可以用delete+insert,基本不到2-3分钟就搞定了
destiny023 2016-11-10
  • 打赏
  • 举报
回复
foreachPartition算子内每条记录查询一次是否有该主键,这种性能如何呢,假如目标表有几千万的数据,这样性能会不会很差?
kxiaozhuk 2016-11-10
  • 打赏
  • 举报
回复
建议先delete再insert,速度快,又不会出现update错的情况
LinkSe7en 2016-11-10
  • 打赏
  • 举报
回复
我写了个insertOrUpdate,实际逻辑就是Dataset与目标表结构一致,指定某一字段作为id,foreachPartition算子内每条记录查询一次是否有该主键,如果有就进行update(sql拼装),没有就进行insert 最暴力的做法是delete+insert。。。。
_明月 2016-11-10
  • 打赏
  • 举报
回复
抱歉,由于个人能力有限,帮不了你!

1,270

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧