2017-01-02 59 views
1

我在Spark中寫入流作業以將數據加載到拼接機。我已經使用VTI將社區教程插入到Splice中,但所有示例都執行INSERT。相反,我應該執行記錄的UPSERT。有什麼辦法可以做到這一點?Upsert進入拼接機

謝謝。

回答

2

是的,你可以通過改變VTI語句來使用insertMode提示來做一個upsert。你的聲明將類似於以下內容:

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代碼,你需要提示後添加一個新行字符(\ n)的,否則就認爲一切是部分暗示。如果您使用的是2.0.x版本,則在下一版本的拼接機器中使用VTI時存在一個問題,我們可以將修復移植到該版本。

兩個使用VTI時,你可能會發現有用的其他建議是:

  • statusDirectory:這使導入/ UPSERT消息不好的目錄上HDFS很像SYSCS_UTIL.IMPORT_DATA聲明確實
  • badRecordsAllowed:表示在進程失敗之前允許的不良記錄的數量
+0

感謝您的回答。我錯過了一點:我有版本2.0.1.28,因此我受到了錯誤的影響?如果是這樣,你是否知道CDH 5.8.X是否有一個不受它影響的更新版本?此外,是否提供可用提示的參考/文檔?謝謝! – mgaido

+1

是的,您受到此缺陷的影響。我將檢查您的發行版的修復程序,以便在2.0的下一個版本中可用。這些提示未在我們的文檔中列出 - 我將添加一個請求,讓VTI文檔頁面更新這些提示。 – Erin