2015-02-19 8 views
4

Я должен обновить JavaSchemaRDD с некоторыми новыми значениями, имея некоторые условия WHERE.Как выполнить обновление в Apache Spark SQL

Это 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) 
+0

Я не думаю, что вы можете выполнить _update_ в Spark SQL. Спарк в целом имеет дело с неизменяемыми данными. Идея состоит в том, чтобы взять один огромный набор данных и преобразовать его в другой огромный набор данных. Я думаю, это направление, в котором вы должны попытаться приблизиться к этому. –

ответ

1

Да я получил решение моей собственной. Я достиг этого только с использованием ядра Spark, я не использовал Spark-Sql для этого. У меня есть 2 RDD (также можно назвать таблицами или наборами данных) t1 и t2. Если мы соблюдаем мой вопрос в вопросе, я обновляю t1 на основе одного условия соединения и двух условий. Значение Мне нужно три столбца (id_column, column1 и column2) из ​​t2. Поэтому я взял эти столбцы в 3 отдельные коллекции. И затем я поместил итерацию по 1-му RDD t1, и во время итерации я добавил эти три оператора условий (1 Join и 2, где условия), используя java-условия if. Поэтому, основываясь на условиях «если», первые значения RDD обновляются.

Смежные вопросы