2017-01-02 36 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