quais são as diferenças entre os fluxos kafka e mapr da perspectiva de codificação?
2 answers
Como tal, não há grande diferença na API de fluxo de Kafka e MapR em termos de codificação.
Mas existem algumas diferenças em termos de configuração e argumentos da API:
- o Kafka suporta O receptor e directamente ambas as abordagens, mas o fluxo de MapR suporta apenas a aproximaçãodirecta .
- o valor de configuração de reposição offset para ler os dados desde o início, é o menor no Kafka, mas no fluxo de MapR é mais cedo .
- a API do Kafka suporta para passar os argumentos de deserialização da chave e do valor no método, mas na API de fluxo do MapR terá de os Configurar no mapa do Kafka params contra a tecla .valor do deserializador e .chaves do desertor.
Exemplo de abordagem directa para a API do fluxo de Kafka e MapR chama para receber o fluxo de DStream:
Kafka API:
// setting the topic.
HashSet<String> topicsSet = new HashSet<String>(Arrays.asList("myTopic"));
// setting the broker list.
Map<String, String> kafkaParams = new HashMap<String, String>();
kafkaParams.put("metadata.broker.list", "localhost:9092");
// To read the messages from start.
kafkaParams.put("auto.offset.reset", "smallest");
// creating the DStream
JavaPairInputDStream<byte[], byte[]> kafkaStream = KafkaUtils.createDirectStream(streamingContext, byte[].class, byte[].class, DefaultDecoder.class, DefaultDecoder.class, kafkaParams, topicsSet);
API de transmissão MapR:
// setting the topic.
HashSet<String> topicsSet = new HashSet<String>(Arrays.asList("myTopic"));
// setting the broker list.
Map<String, String> kafkaParams = new HashMap<String, String>();
kafkaParams.put("metadata.broker.list", "localhost:9092");
// To read the messages from start.
kafkaParams.put("auto.offset.reset", "earliest");
// setting up the key and value deserializer
kafkaParams.put("key.deserializer", StringDeserializer.class.getName());
kafkaParams.put("value.deserializer", ByteArrayDeserializer.class.getName());
// creating the DStream
JavaPairInputDStream<byte[], byte[]> kafkaStream = KafkaUtils.createDirectStream(streamingContext, byte[].class, byte[].class, kafkaParams, topicsSet);
Espero que a explicação acima ajudá-lo a compreender as diferenças entre o Kafka e o MapR Stream API.
Obrigado. Hokamwww.streamanalytix.com
Eu não usei fluxos MapR (uma vez que não é de código aberto), mas meu entendimento é que eles clonaram a API Kafka 0.9 Java. Então, se você está usando clientes Kafka 0.9, deve ser bastante semelhante (mas você precisa usar o cliente deles, não o Apache).
Além disso, note que os clientes noutras línguas não estarão disponíveis. E outros projetos Apache que usam APIs diferentes (notavelmente Spark Streaming) necessitarão de Versões especiais compatíveis com MapR.