Como enviar manualmente o offset no streaming directo do Kafka Spark?

Dei uma vista de olhos, mas não encontrei uma resposta satisfatória para isto. Talvez me esteja a escapar alguma coisa. Ajudar.

Temos uma aplicação de Spark streaming que consome um tópico Kafka, que precisa de assegurar o processamento extremo-a-extremo antes de avançar as compensações do Kafka, por exemplo, a actualização de uma base de dados. Isto é muito parecido com construir Suporte de transação dentro do sistema de streaming, e garantir que cada mensagem é processada (transformada) e, mais importante, saída.

li sobre Kafka DirectStreams. Diz que para a recuperação robusta de falhas no modo de fluxo direto, o ponto de controle de faísca deve ser ativado, que armazena as compensações juntamente com os pontos de controle. Mas a gestão de compensação é feita internamente (definindo os parâmetros de configuração do Kafka como [[[[0]}]). Ele não fala de como (ou se) podemos personalizar compensações de commit (uma vez que tenhamos carregado um banco de dados, por exemplo). Em outras palavras, podemos definir "auto.commit.enable" Para falso e gerenciar as compensações (não ao contrário de uma conexão DB) nós mesmos?

qualquer orientação/ajuda é muito apreciada.

Author: TroubleShooter, 2016-07-28

1 answers

O artigo abaixo pode ser um bom começo para entender a abordagem.

Spark-kafka-achieving-zero-data-loss

Mais,

O artigo sugere usar o cliente do Zoo directamente, que pode ser substituído por algo como KafkaSimpleConsumer também. A vantagem de usar o Zookeper/KafkaSimpleConsumer é as ferramentas de monitoramento que dependem do deslocamento guardado do Zookeper. Além disso, a informação também pode ser salvo em HDFS ou qualquer outro serviço confiável.

 1
Author: rakesh, 2018-04-18 10:21:25