Spark-Redis的使用

Posted DataRain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark-Redis的使用相关的知识,希望对你有一定的参考价值。

上一集记录了下Redis的常用命令行,对Redis数据结构也记录了一下,这是为介绍Spark-Redis这个包的简介做个铺垫。这个包提供了spark操作Redis的方法,支持rdd写入到Redis中,也支持读取Redis中的数据生成rdd来使用。这个包支持spark-shell的方式来使用,也支持java api,这里看看java api是怎么调用的,首先需要maven引入:

<dependency> <groupId>com.redislabs</groupId> <artifactId>spark-redis_2.11</artifactId> <version>2.4.2</version></dependency>

具体操作Redis是通过RedisContext对象来完成的,需要通过SparkContest来构造这个对象,结合RedisConfig中的Redis端点信息就可以读写Redis中的数据。

// redis的ipString host = 192.168.0.1;// redis的端口int port = 6379;// redis连接的dbint dbNum = 1;// redis连接超时参数int timeOut = 2000;// 初始化redisConfigRedisEndpoint redisEndpoint = new RedisEndpoint(host,port,auth,dbNum,timeOut);RedisConfig redisConfig = new RedisConfig(redisEndpoint);// 初始化redisContextRedisContext redisContext = new RedisContext(sparkContext);
// 获取redis数据时RDD分区数量int partitionNum = 3;// 写入redis数据时,该数据的过期时间,0则为永不过时int ttl = 0;// 需要查询 keyString key = "test";
// 获取String类型数据RDD<Tuple2<String, String>> kvRdd = redisContext.fromRedisKV(keyPattern, partitionNum, redisConfig);// 写入String类型数据redisContext.toRedisKV(kvRdd, ttl, redisConfig);
// 获取hash类型数据RDD<Tuple2<String, String>> hashRdd = redisContext.fromRedisHash(keyPattern, partitionNum, redisConfig);// 写入hash类型数据redisContext.toRedisHASH(hashRdd , key, ttl, redisConfig);
// 获取list类型数据RDD<String> listRdd = redisContext.fromRedisList(keyPattern, partitionNum, redisConfig);// 写入list类型数据redisContext.toRedisLIST(listRdd , key, ttl, redisConfig);// 获取set类型数据RDD<String> setRdd = redisContext.fromRedisSet(keyPattern, partitionNum, redisConfig);// 写入set类型数据redisContext.toRedisSET(setRdd , key, ttl, redisConfig);

从上面看这个Spark-Redis主要通过一个很方便的入口去大批量的读取、写入Redis数据并转换为RDD,使用java api的话需要将这个RDD转为javaRDD,并且对于hash结构的数据读取后并不会自动转换为pairRDD,需要我们进一步对Tuple<String,String>类型的RDD进行处理。


以上是关于Spark-Redis的使用的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

webstorm代码片段的创建

使用 Git 来管理 Xcode 中的代码片段

Android课程---Android Studio使用小技巧:提取方法代码片段

VIM 代码片段插件 ultisnips 使用教程

使用 Pygments 检测代码片段的编程语言