设为首页 加入收藏

TOP

Hbase数据高性能同步到Redis
2019-03-10 13:45:29 】 浏览:160
Tags:Hbase 数据 高性能 同步 Redis

public class TestHabse {

//与HBase数据库的连接对象
public static Connection connection;

//数据库元数操作对象
public static Admin admin;
public static Jedis jedis = null;

public static JedisUtil JedisUtil = JedisUtil.getInstance();

public static void main(String[] args) {
    try {
        System.out.println("开始执行本程序");
        System.out.println("HBaseDemo.main()->admin1:" + admin);
        synchronousDataByHbaseToRedis();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}


public static void synchronousDataByHbaseToRedis() throws IOException {
    Configuration config = HBaseConfiguration.create();
    //设置连接参数:hbase数据库所在的主机IP
    config.set("hbase.zookeeper.quorum", "172.16.20.13,172.16.20.14,172.16.20.15,172.16.20.16,172.16.20.17");
    //设置连接参数:hbase数据库使用的接口
    config.set("hbase.zookeeper.property.clientPort", "2181");

    Connection conn = ConnectionFactory.createConnection(config);
    // 创建一个数据库管理员

    Table table = conn.getTable(TableName.valueOf("company_invest"));
    try {
        Scan scan = new Scan();

// 扫某一列
scan.addColumn(Bytes.toBytes(“data”), Bytes.toBytes(“invests”));
scan.addColumn(Bytes.toBytes(“data”), Bytes.toBytes(“keyno”));
ResultScanner resultScanner = table.getScanner(scan);
jedis = JedisUtil.getJedis();
Pipeline pip = jedis.pipelined();
int level = 1;
for (Result r : resultScanner) {

            String keyno = Bytes.toString(r.getValue(Bytes.toBytes("data"), Bytes.toBytes("keyno")));
            String name = Bytes.toString(r.getValue(Bytes.toBytes("data"), Bytes.toBytes("invests")));
            pip.setex(keyno, 60 * 60 * 24, name);

// for (Cell kv : r.rawCells()) {
// String keyNo = Bytes.toString( kv.getRow());
// String value = Bytes.toString(CellUtil.cloneva lue(kv));
// System.out.println(keyNo +"===========" +value);
// }
System.out.println(level++);

        }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    } finally {
        conn.close();
        jedis.close();
    }
}

}

Redis的连接池
/**

  • redis工具类
    */
    public class JedisUtil {
    private static final Logger logger = LoggerFactory.getLogger(JedisUtil.class);

    private static JedisPool jedisPool = null;

    private JedisUtil() {

    }

    static {
    JedisPoolConfig config = new JedisPoolConfig();
    config.setMaxTotal(6000000);
    config.setMaxIdle(10000);
    config.setMinIdle(8);
    config.setMaxWaitMillis(100000);
    config.setTestOnBorrow(true);
    config.setTestOnReturn(true);
    config.setTestOnBorrow(true);
    config.setTestWhileIdle(true);
    config.setTimeBetweenEvictionRunsMillis(30000);
    config.setNumTestsPerEvictionRun(10);
    config.setMinEvictableIdleTimeMillis(60000);
    jedisPool = new JedisPool(config, “127.0.0.1”, 6379, 10000, “123456”);
    }

    /**

    • 从jedis连接池中获取获取jedis对象
    • @return
      */
      public Jedis getJedis() {
      Jedis jedis = null;
      try {
      jedis = jedisPool.getResource();
      } catch (Exception e) {
      logger.info(e.getMessage());
      jedis.close();
      }
      return jedis;
      }
      }
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Hbase   JavaAPI的简单封装 下一篇HBASE一些简单的查询语句

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目