Spark SQL 合并查询
Posted
技术标签:
【中文标题】Spark SQL 合并查询【英文标题】:Spark SQL Merge query 【发布时间】:2020-08-24 06:16:30 【问题描述】:我正在尝试MERGE
使用 spark sql 的两个表,但语句出错。
这些表被创建为指向 Azure ADLS 存储的外部表。该 sql 正在使用 Databricks 执行。
表 1:
Name,Age.Sex
abc,24,M
bca,25,F
表 2:
Name,Age,Sex
abc,25,M
acb,25,F
表 1 是目标表,表 2 是源表。 在表 2 中,我有一个插入记录和一个更新记录,需要与源表 1 合并。
查询:
MERGE INTO table1 using table2 ON (table1.name=table2.name)
WHEN MATCHED AND table1.age <> table2.age AND table1.sex<>table2.sex
THEN UPDATE SET table1.age=table2.age AND table1.sex=table2.sex
WHEN NOT MATCHED
THEN INSERT (name,age,sex) VALUES (table2.name,table2.age,table2.sex)
spark SQL 支持合并还是有其他实现方式?
谢谢 周六
【问题讨论】:
【参考方案1】:要使用 MERGE,您需要 Delta Lake 选项(以及相关的 jar)。然后你可以使用 MERGE。
否则,Spark 不支持 SQL Merge。然后需要具有自己逻辑的 Dataframe Writer API。有几种不同的方法可以做到这一点。即使使用 ORC ACID,Spark 也不会以这种方式工作。
【讨论】:
以上是关于Spark SQL 合并查询的主要内容,如果未能解决你的问题,请参考以下文章