dataset.write() приводит к появлению искры Java ORA-00001
Просто пытаюсь выяснить, как лучше всего справиться с этой ситуацией. Я использую dataset.write для записи в базу данных оракула, и необходимо найти, если дубликат уже существует в таблице (не в наборе данных), и если существует, записать эти дубликаты в другую таблицу. Кто-нибудь сталкивался с подобной проблемой? Таблица, в которую я пишу, огромна и будет дорогостоящей, если я прочитаю существующие данные из этого, чтобы сравнить с ней перед записью набора данных
Используемый режим сохранения - добавление. Это потоковое приложение kafka, которое передает данные непрерывно каждые 2 минуты.
1 ответ
Там нет режима UPSERT, я полагаю, вы имеете в виду DF.write или DS.write.
Вопрос в том, как часто возникает такой дубликат и почему? И каково влияние, если каждый проскальзывает так время от времени? Я не склонен иметь повторное нарушение ключа, возникающее в этом сценарии.
Если дублирующих вставок по логике немного, и существует подходящее основанное на времени разбиение ORACLE, которое ограничивает объем проверяемых данных, вы можете сделать это на стороне СУБД как периодический процесс.
Так что я бы не стал проверять со стороны ИСКРЫ. Это также кажется немного противоречащим интуитивному глотанию с KAFKA и взрыву, выписывающему это как можно скорее.
Интересный вопрос, так как любой подход к выполнению чего-либо требует решения: кэширование, перечитывание и т. Д. На стороне SPARK.