0

我们有一个在 Memsql 下运行的 Spark 集群,我们有不同的 Pipelines 运行,ETL 设置如下。

  1. 提取:- Spark 从 Kafka 集群读取消息(使用 Memsql Kafka-Zookeeper)
  2. 转换:- 我们为此步骤部署了一个自定义 jar
  3. 加载:- 来自 Transform 阶段的数据加载到列存储中

我有以下疑问:

如果作业在转换阶段失败,从 Kafka 轮询的消息会发生什么 - Memsql 是否负责再次加载该消息 - 或者数据丢失

如果数据丢失,我该如何解决这个问题,是否需要为此进行任何配置更改?

4

2 回答 2

0

如果您还没有,您应该查看 MemSQL 5.5 Pipelines。 http://blog.memsql.com/pipelines/

这不是基于 spark 的(并且转换的完成方式有些不同,因此您可能必须重写代码),但我们现在有原生 kafka 流。

我们在原生版本中只获得一次的方式很简单;将偏移量存储在与实际数据相同的原子事务中。如果某些事情失败并且事务未提交,则不会提交偏移量,因此我们自然会自动重试该分区偏移量范围。

于 2016-09-29T18:12:17.750 回答
0

就目前而言,至少有一次语义在 MemSQL Ops 中不可用。它在路线图上,并将出现在 Ops 的未来版本之一中。

于 2016-02-02T17:45:04.707 回答