【问题标题】:Spark SQL Merge querySpark SQL 合并查询
【发布时间】: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 支持合并还是有其他实现方式?

谢谢 周六

【问题讨论】:

    标签: apache-spark apache-spark-sql databricks


    【解决方案1】:
    • 要使用 MERGE,您需要 Delta Lake 选项(以及相关的 jar)。然后你可以使用 MERGE。

    • 否则,Spark 不支持 SQL Merge。然后需要具有自己逻辑的 Dataframe Writer API。有几种不同的方法可以做到这一点。即使使用 ORC ACID,Spark 也不会以这种方式工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多