当前位置: 首页 > 知识库问答 >
问题:

如何并行插入Delta表

仲君昊
2023-03-14

df.write.format(“delta”).mode(“append”).save(“ ”)

目前,这个表上没有分区,这可能是一个可能的修复,但在沿着这条路线前进之前,我是否遗漏了一些关于如何并行地获得不冲突的插入的东西?

共有1个答案

詹夕
2023-03-14

您必须在表的两种隔离级别之间进行选择,缺省的是较弱的一种,因此不会脱离隔离级别。https://docs.databricks.com/delta/optimizations/election-level.html

Delta Lake具有OCC(乐观并发控制),这意味着您要写到表中的数据将根据其他99个进程要写的所有数据进行验证。这意味着要进行100*100=10000次验证。https://en.wikipedia.org/wiki/optigent_concurrency_control

请记住,当100个笔记本中的最后一个完成时,您的数据处理架构将完成。也许100本笔记本中的一本或多本需要3个小时才能完成,而插入不是罪魁祸首?

 类似资料:
  • 问题内容: 我知道MySQL中并发SELECT和INSERT存在一个问题。但是,我的问题是,如果我与MySQL建立两个连接并继续使用这两个连接来加载数据,MySQL是同时获取数据还是在加载另一个之前等待一个完成? 我想知道两种情况下MySQL的行为。就像当我尝试在打开单独的连接时尝试同时在同一张表或不同表中加载数据时一样。 问题答案: 如果要创建与数据库的新连接并从两个链接执行插入,那么从数据库的

  • 问题内容: 我有个问题。有三个表:T1,T2,T_target。T1和T2表具有许多不同的列,但我只需要两者中的ID列。T_target表具有一个ID列,当然还有另一个:project_No。 T1和T2中也出现了一些ID,但是我不想在它们之间创建重复项,如果一个ID同时出现在两个表中,则只需将其插入到T_target中一次,但是如果它已经在T_target中,则允许行动两次。另一个条件是,每个新

  • 问题内容: 我将主键设置为自动递增。 我正在执行多个查询,我需要检索该主键值以用作另一个表()中的外键。 当我执行插入查询时,是否有任何优雅的方法来获取主键值?现在,我正在重新查询并获得该列中的最高价值,这似乎真的很棘手。 有什么建议? 问题答案: 通过scope_identity()获得新的PK

  • 本文向大家介绍如何执行批量插入?相关面试题,主要包含被问及如何执行批量插入?时的应答技巧和注意事项,需要的朋友参考一下 首先,创建一个简单的 insert 语句:   然后在 java 代码中像下面这样执行批处理插入:

  • 我有两个模型/表,它们具有“has and bomning to many”(HABTM)关系:和 我可以手动删除行,如下所示: 如何在联接表中插入新行?我找到的任何处理HABTM数据的文档都是专门引用表单的,但我的数据不是来自表单的。

  • 问题内容: 通常,我可以在MySQL表中插入一行并取回。但是,现在,我想将许多行批量插入表中并获取ID数组。有人知道我该怎么做吗? 有一些类似的问题,但并不完全相同。我不想将新ID插入任何临时表;我只想找回ID数组。 我可以从批量插入中检索lastInsertId吗? 带有last_insert_id()的MySQL多行插入选择语句 问题答案: 旧线程,但只是研究了一下,所以去了:如果您在最新版本