为什么在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