我正在努力 MERGE
两个表使用sparksql,语句出错。
这些表被创建为指向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中,我有一个insert和一个update记录,需要与源表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)
是sparksql支持合并还是有其他方法实现它?
谢谢,萨特
1条答案
按热度按时间bt1cpqcv1#
要使用merge,您需要delta-lake选项(以及相关的jar)。然后可以使用合并。
否则,spark不支持sql合并。然后需要具有自己逻辑的dataframe writer api。有几种不同的方法可以做到这一点。即使使用orc酸,Spark也不会以这种方式工作。