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.cloneValue(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;
      }
      }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值