我们有一个在memsql下运行的spark集群,我们有不同的管道运行,etl设置如下。
extract:- spark 从kafka集群读取消息(使用memsql kafka zookeeper)
transform:- we 为此步骤部署一个自定义jar
load:- data 从转换阶段加载到columnstore中
我有以下疑问:
如果作业在转换阶段失败,那么从kafka轮询的消息会发生什么情况?memsql会再次加载该消息吗?或者,数据会丢失吗
如果数据丢失,我该如何解决这个问题,是否需要为此进行任何配置更改?
2条答案
按热度按时间8gsdolmq1#
目前看来,至少有一次语义在memsqlops中不可用。它在路线图上,并将出现在ops的未来版本中。
brtdzjyr2#
如果您还没有,那么应该检查memsql5.5管道。http://blog.memsql.com/pipelines/
这个不是基于spark的(转换的方式有点不同,所以你可能需要重写你的代码),但是我们现在有了原生的kafka流。
使用本机版本只获得一次的方法很简单;将偏移量存储在与实际数据相同的原子事务中。如果某个操作失败并且事务没有提交,那么将不会提交偏移量,因此我们将自然地自动重试该分区偏移量范围。