我必须通过具有一些WHERE
条件来用一些新值更新JavaSchemaRDD
。
这是我想转换为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)
是的,我自己得到了解决方案。我只使用Spark核心实现了这一点,我没有为此使用Spark Sql。我有两个RDD(也可以称为表或数据集)t1和t2。如果我们观察我在问题中的查询,我将基于一个联接条件和两个where条件更新t1。这意味着我需要从t2开始的三列(id_column、column1和column2)。所以我把这些专栏分成了3个单独的系列。然后我在第一个RDD t1上进行迭代,在迭代过程中,我使用java"if"条件添加了这三个条件语句(1个Join和2个where条件)。因此,基于"if"条件结果,首先更新RDD值。