如何在Apache Spark SQL中执行更新

She*_*tel 5 join sql-update apache-spark apache-spark-sql

我必须JavaSchemaRDD通过一些WHERE条件更新一些新值.

这是我要转换为Spark SQL的SQL查询:

UPDATE t1
  SET t1.column1 = '0', t1.column2 = 1, t1.column3 = 1    
  FROM TABLE1 t1
  INNER JOIN TABLE2 t2 ON t1.id_column = t2.id_column     
  WHERE (t2.column1 = 'A') AND (t2.column2 > 0)   
Run Code Online (Sandbox Code Playgroud)

She*_*tel 1

是的,我自己找到了解决方案。我仅使用 Spark 核心实现了这一点,我还没有使用 Spark-Sql 来实现这一点。我有 2 个 RDD(也可以称为表或数据集)t1 和 t2。如果我们在问题中观察我的查询,我将根据一个连接条件和两个 where 条件更新 t1 。这意味着我需要 t2 中的三列(id_column、column1 和 column2)。所以我将这些专栏分成了 3 个单独的集合。然后我对第一个 RDD t1 进行迭代,并在迭代期间使用 java“if”条件添加了这三个条件语句(1 个 Join 和 2 个 where 条件)。因此,根据“if”条件结果,首先更新 RDD 值。