如何解决Spark SQL合并查询
我正在尝试使用spark sql MERGE
来创建两个表,并且语句出错。
这些表被创建为指向Azure ADLS存储的外部表。 sql正在使用Databricks执行。
表1:
Name,Age.Sex
abc,24,M
bca,25,F
表2:
Name,Age,Sex
abc,M
acb,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支持是合并还是实现它的另一种方法?
谢谢 星期六
解决方法
-
要使用MERGE,您需要Delta Lake选项(和关联的jar)。然后,您可以使用MERGE。
-
否则,Spark不支持SQL合并。然后需要具有自己逻辑的Dataframe Writer API。有几种不同的方法可以做到这一点。即使使用ORC ACID,Spark也无法以这种方式工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。