插入拼接机
Upsert into Splice Machine
我正在 Spark 中编写流作业以将数据加载到 Splice Machine。我已经按照使用 VTI 将数据插入 Splice 的社区教程进行操作,但所有示例都执行 INSERT。相反,我应该对记录执行 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 代码中,您需要在提示后添加换行符 (\n),否则它会认为所有内容都是提示的一部分。如果您使用的是 2.0.x 版本,则在下一个版本的拼接机中已修复使用 VTI 提示时出现的问题,我们可以将修复程序移植回该版本。
您在使用 VTI 时可能会发现有用的其他两个提示是:
- statusDirectory:将导入/更新插入消息放在 HDFS 上的错误目录中,就像 SYSCS_UTIL.IMPORT_DATA 语句所做的那样
- badRecordsAllowed:表示进程失败前允许的坏记录数
我正在 Spark 中编写流作业以将数据加载到 Splice Machine。我已经按照使用 VTI 将数据插入 Splice 的社区教程进行操作,但所有示例都执行 INSERT。相反,我应该对记录执行 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 代码中,您需要在提示后添加换行符 (\n),否则它会认为所有内容都是提示的一部分。如果您使用的是 2.0.x 版本,则在下一个版本的拼接机中已修复使用 VTI 提示时出现的问题,我们可以将修复程序移植回该版本。
您在使用 VTI 时可能会发现有用的其他两个提示是:
- statusDirectory:将导入/更新插入消息放在 HDFS 上的错误目录中,就像 SYSCS_UTIL.IMPORT_DATA 语句所做的那样
- badRecordsAllowed:表示进程失败前允许的坏记录数