Join 如何在ApacheSparkSQL中执行更新

Join 如何在ApacheSparkSQL中执行更新,join,sql-update,apache-spark,apache-spark-sql,Join,Sql Update,Apache Spark,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

我必须通过使用一些
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 core实现了这一点,我没有为此使用Spark Sql。我有两个RDD(也可以称为表或数据集)t1和t2。如果我们观察问题中的查询,我将根据一个连接条件和两个where条件更新t1。这意味着我需要t2中的三列(id_列、第1列和第2列)。所以我把这些专栏分成了3个独立的系列。然后我在第一个RDDT1上进行迭代,在迭代过程中,我使用java“if”条件添加了这三个条件语句(1个Join和2个where条件)。因此,根据“if”条件,首先更新RDD值。

我认为您无法在Spark SQL中执行更新。Spark通常处理不变的数据。这个想法是把一个巨大的数据集转换成另一个巨大的数据集。我认为这是你应该尝试的方向。