Spark Stream 实时读kafka写redis,rdd转换其他类型

做一个实时系统,用到了kafka,redis,sparkStream,很经典的一个架构。

kafka的生产者就不写了,这边只涉及sparksteam写消费者代码,存到redis。

KafkaToRedis kafkaToRedis=new KafkaToRedis();
    SparkConf conf = new SparkConf().setAppName("kafka_to_redis");
    JavaStreamingContext jssc = new JavaStreamingContext(conf,Durations.seconds(10));
        Map<String, String> kafkaParams = new HashMap<>();
        kafkaParams.put("bootstrap.servers","wxincentos1:9092,wxincentos3:9092");
        kafkaParams.put("metadata.broker.list", "wxincentos1:9092,wxincentos3:9092");
        kafkaParams.put("group.id", "1");Set<String> topics = new HashSet<String>();
        topics.add("test3");
        JavaPairInputDStream<String,String> lines = KafkaUtils.createDirectStream(
                jssc, 
                String.class, // key类型
                String.class, // value类型
                StringDecoder.class, // 解码器
                StringDecoder.class,
                kafkaParams, 
                topics);

到此就看后面的需求了,网上太多的wordcount的列子,看的都快吐了,想找个能把数据内容取出来的都那么困难,大多还是停留在rdd上,没办法只好自己想办法,看了好多列子,发现其实就是个rdd转其他类型的问题,就好办多了。

把rdd collect一下就能得到一个数组,操作也简单,说干就干。

        JavaDStream<String> valueDStream = lines.map(new Function<Tuple2<String, String>, String>() {
            public String call(Tuple2<String, String> v1) throws Exception {
                return v1._2();
            }
        });

List a=rdd.collect();
            for(int i = 0; i<a.size();i++){

a.get(i);

}

数据就轻轻松松地取出来啦

写redis的话就是实例化个redis客户端,操作操作即可。就不赘述啦,后面讲讲redis集群怎么用的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值