更新时间:2022-02-22 GMT+08:00

为什么在Spark Shell中不能执行更新命令?

问题

为什么在Spark Shell中不能执行更新命令?

回答

本文档中给出的语法和示例是关于Beeline的命令,而不是Spark Shell中的命令。

若要在Spark Shell中使用更新命令,可以使用以下语法。

  • 语法1

    <carbon_context>.sql("UPDATE <CARBON TABLE> SET (column_name1, column_name2, ... column_name n) = (column1_expression , column2_expression , column3_expression ... column n_expression) [ WHERE { <filter_condition> } ];").show

  • 语法2

    <carbon_context>.sql("UPDATE <CARBON TABLE> SET (column_name1, column_name2,) = (select sourceColumn1, sourceColumn2 from sourceTable [ WHERE { <filter_condition> } ] ) [ WHERE { <filter_condition> } ];").show

示例:

如果CarbonData的context是“carbon”,那么更新命令如下:

carbon.sql("update carbonTable1 d set (d.column3,d.column5) = (select s.c33 ,s.c55 from sourceTable1 s where d.column1 = s.c11) where d.column1 = 'country' exists( select * from table3 o where o.c2 > 1);").show