Да, вы можете сделать upsert, изменив инструкцию VTI, чтобы использовать подсказку insertMode. Ваше заявление будет выглядеть примерно следующее:
INSERT INTO IOT.SENSOR_MESSAGES --splice-properties insertMode=UPSERT select s.* from new com.splicemachine.tutorials.sparkstreaming.kafka.SensorMessageVTI(?) s ( id varchar(20), enter code here location varchar(50), temperature decimal(12,5), humidity decimal(12,5), recordedtime timestamp );
Обратите внимание, что в вашем коде Java вам нужно будет добавить символ новой строки (\ п) после того, как намек, в противном случае он считает все, что является частью намек. Возникла проблема с использованием советов с VTI, которые были исправлены в следующей версии машины для сращивания, если вы находитесь на версии 2.0.x, мы можем вернуть исправление к этой версии.
Две другие подсказки, которые могут оказаться полезными при использовании VTI являются:
- statusDirectory: Что ставит импорт/upsert сообщений в плохом каталоге на HDFS так же, как заявление SYSCS_UTIL.IMPORT_DATA делает
- badRecordsAllowed: указывает количество ошибочных записей, которые разрешены до сбоя процесса.
Благодарим вас за ответ. Мне не хватает только одного пункта: у меня есть версия 2.0.1.28, поэтому меня касается ошибка? Если да, то знаете ли вы, есть ли более новая версия для CDH 5.8.X, на которую это не влияет? Кроме того, есть ли ссылка/документация для доступных подсказок? Спасибо! – mgaido
Да, вы попали в этот дефект. Я собираюсь проверить исправление для выпуска, поэтому он должен быть доступен со следующей сборкой для версии 2.0. Эти рекомендации не указаны в нашей документации - я добавлю запрос на обновление страницы документации VTI с этими подсказками. – Erin