从编码角度看kafka和mapr流之间有什么区别?我需要在将来实现mapr流,但目前我只能访问kafka,所以现在探索kafka很有用吗?一旦我获得访问权限,我就可以轻松获取mapr流吗?
答案 0 :(得分:2)
我还没有使用MapR Streams(因为它不是开源的),但我的理解是他们克隆了Kafka 0.9 Java API。因此,如果您使用的是Kafka 0.9客户端,它应该非常相似(但您需要使用他们的客户端,而不是Apache')。
此外,请注意其他语言的客户端将无法使用。使用不同API(特别是Spark Streaming)的其他Apache项目将需要特殊的MapR兼容版本。
答案 1 :(得分:2)
因此,Kafka和MapR Stream API在编码方面没有太大区别。
但是在配置和API参数方面存在一些差异:
用于接收DStream的Kafka和MapR Stream API调用的直接方法示例:
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);
MapR Stream 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", "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);
我希望上面的解释可以帮助您理解Kafka和MapR Stream API之间的差异。
谢谢,
Hokam
www.streamanalytix.com