如何在 Apache Spark 中执行更新 SQL
How to perform update in Apache Spark SQL
我必须通过满足一些 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 。我有 2 个 RDD(也可以称为表或数据集)t1 和 t2。如果我们在问题中观察我的查询,我将根据一个连接条件和两个 where 条件更新 t1。这意味着我需要来自 t2 的三列(id_column、column1 和 column2)。所以我将这些专栏分为 3 个单独的集合。然后我在第一个 RDD t1 上进行迭代,在迭代期间我使用 java "if" 条件添加了这三个条件语句(1 个 Join 和 2 个 where 条件)。因此,根据 "if" 条件结果,第一个 RDD 值得到更新。
我必须通过满足一些 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 。我有 2 个 RDD(也可以称为表或数据集)t1 和 t2。如果我们在问题中观察我的查询,我将根据一个连接条件和两个 where 条件更新 t1。这意味着我需要来自 t2 的三列(id_column、column1 和 column2)。所以我将这些专栏分为 3 个单独的集合。然后我在第一个 RDD t1 上进行迭代,在迭代期间我使用 java "if" 条件添加了这三个条件语句(1 个 Join 和 2 个 where 条件)。因此,根据 "if" 条件结果,第一个 RDD 值得到更新。