Известная проблема.
У меня есть требование UPSert к mySQL в некоторых незначительных случаях.
То, что я делал, было в таких случаях:
- Обработка в SPARK и сохранение результатов для временного просмотра или обработка результатов в Dataframe / DataSet.
- Сохранить с шага 1 во временную таблицу mySQL.
- Выполнение оператора mutate из SPARK, выполняющего UPSert в и в среде mySQL, от временной таблицы до финальной таблицы в состоянии покоя в mySQL.
Это лучшее, что я получил. Есть и другие подходы, но это один из таких подходов.
Я говорил в общих терминах, поэтому для mySQL, поскольку UPSert отсутствует, я использовал такой подход:
insert into t1(a, b, c)
select d, e, f from t2
on duplicate key update b = e, c = f;
с помощью оператора mutate. Не совсем ИСКРА, но мы должны время от времени обходиться!