Flink查询关联Hbase输出

本文详细介绍了如何在本地使用Docker搭建Hbase环境,创建Hbase连接类,异步调用Hbase的方法,以及实际操作中的数据查询与存储示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、前言

大家在开发Flink的时候,很多时候会把某些固定的维度信息存储在Hbase或者Redis等这些第三方库里,已方便来跟流发生关联查询输出。本文将从如何本地搭建一个Hbase环境开始讲起,到如何构建一个Hbase公共调用类,到如何构建一个异步调用Hbase的公共代码,再到最后实际调用代码后的输出。

2、本地利用Docker搭建HBase环境

 本地如何搭建Docker环境,之前一篇博客中已经详细描述过,大家如果想学习如何搭建,可以去看下,地址如下:Docker入门-Windows 10&Mac系统安装_一个数据小开发的博客-优快云博客一、何为DockerDocker 是一个开源的应用容器引擎,基于Go语言并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。runc 是一个 Linux 命令行工具,用于根据 OCI容器运行时规范 创建和运行容器。containerd 是一个守护程序https://blog.youkuaiyun.com/Aaron_ch/article/details/115559512?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164568960216780271525279%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=164568960216780271525279&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-115559512.nonecase&utm_term=docker&spm=1018.2226.3001.4450

2.1、下载Hbase镜像

docker pull harisekhon/hbase

2.2、启动Hbase镜像:

docker run -d -h myhbase -p 2181:2181 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9095:9095 -p 16000:16000 -p 16010:16010 -p 16020:16020 -p 16201:16201 -p 16301:16301 --name hbase harisekhon/hbase

Hbase 端口映射图:

2.3、本地添加host

打开/etc/hosts ,如下图所示,添加一行

127.0.0.1 myhbase

此时在浏览器中输入hbase访问的地址,可以看到hbase的页面

http://localhost:16010/master-status

 3、访问Hbase

3.1、图形化工具访问Hbase

如下的图形化工具,Mac和Windows都可以访问。

 如果需要图形化工具的,评论区留下邮箱,本人看到了会第一时间发送

3.2、Java工具类访问

直接上代码,可以直接使用

package com.horse.utils.hbase;

import com.alibaba.fastjson.JSONObject;
import com.google.common.base.CaseFormat;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.flink.util.StringUtils;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.util.List;

/**
 * @author :aaronChen
 * @date :Created in 2022-02-22 16:51
 * @description :
 * @modifiedBy :
 */
@Slf4j
public class HBaseUtils {

    public static Connection getHBaseConnection() {

        try {
            // 1.获取配置文件信息
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "localhost");
//            configuration.set("hbase.zookeeper.property.clientPort", "2181");//可写可不写,默认为2181

            // 2.创建连接对象
            return ConnectionFactory.createConnection(configuration);

        } catch (IOException e) {
            log.error("获取Hbase相关基础信息失");
            e.printStackTrace();
        }
        return null;
    }

//    static {
//        try {
//            // 1.获取配置文件信息
//            Configuration configuration = HBaseConfiguration.create();
//            configuration.set("hbase.zookeeper.quorum", "localhost");
//            configuration.set("hbase.zookeeper.property.clientPort", "2181");//可写可不写,默认为2181
//
//            // 2.创建连接对象
//            connection = ConnectionFactory.createConnection(configuration);
//
//            // 3.创建Admin对象
//            admin = connection.getAdmin();
//
//        } catch (IOException e) {
//            log.error("获取Hbase相关基础信息失");
//            e.printStackTrace();
//        }
//    }

    /**
     * @param tableName
     * @return true or false
     * @throws IOException
     * @author aaronChen
     * @description 判断表是否存在
     */
    public static boolean isTableExist(String tableName, Admin admin) throws IOException {
        // 1.判断表是否存在
        boolean exists = admin.tableExists(TableName.valueOf(tableName));

        // 2.返回结果
        return exists;
    }


    /**
     * @param tableName               需要创建的hbase表名,格式必须要是 命名空间:tablename
     * @param cfs          
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值