从编码角度看kafka和mapr流之间有什么区别?

时间:2016-09-01 12:46:48

标签: apache-kafka streaming mapr bigdata

从编码角度看kafka和mapr流之间有什么区别?我需要在将来实现mapr流,但目前我只能访问kafka,所以现在探索kafka很有用吗?一旦我获得访问权限,我就可以轻松获取mapr流吗?

2 个答案:

答案 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参数方面存在一些差异:

  1. Kafka支持 Receiver Direct 两种方法,但MapR流仅支持 Direct 方法。
  2. 从开始读取数据的偏移重置配置值在Kafka中最小,但在MapR Stream中最早
  3. Kafka API支持在方法中传递Key和Value反序列化器参数,但在MapR流API中,您必须在Kafka参数映射中针对 key.deserializer value.deserializer配置它们键。
  4. 用于接收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

相关问题