flink通过连接hive的元数据管理自己的元数据表

本文详细介绍如何通过Apache Flink连接Hive进行数据处理。包括准备Hive环境、配置Flink集群、设置hive-site.xml、添加依赖jar包、配置sql-client及通过Java访问Hive的具体步骤。

首先感谢https://blog.csdn.net/zhangdongan1991/article/details/105582712的分享。
在开始之前可以先去官网阅读一下熟悉一下catalog的概念有助于后面的部署:https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/hive/hive_catalog.
阅读完了之后开始搞事情!
步骤1,你需要一个可以访问的hive(这个就不需要教程了,既然都到了这一步了你hive就肯定是有的)
步骤2,你需要一套有jdk8的服务器(最好三台可以部署flink的集群,为啥一定是jdk1.8呢,你也可以是jdk11不要怂,试一下你就会发现困难总比办法多)
步骤3,需要把你的hive-site.xml拷贝到你flink的服务器(flink是需要连接你hive的,而连接hive-site.xml是必不可少的,如果还有其他的连接方式你也可以试试)
步骤4,修改hive-site.xml


#修改hive-site.xml文件如下,此文件不是修改hive安装目录下面的文件而是你项目启动的环境
直接拷贝hive下面的过来修改了一样的

<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.120.130:9083</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>
hive.metastore.uris为hive的连接地址
hive.metastore.warehouse.dir为hive连接仓库

步骤5,需要把依赖的jar包添加到flink的lib下面点,具体的大于50M上传不了直接去下载:https://download.csdn.net/download/weixin_43943806/15727658 (没有C币的话联系我给你下载,当然你也可以一步步去搞这样印象深刻一点)
步骤6,修改sql-client-defaults.yaml (这个文件在flink安装包的conf下)中指定自己所需的 Catalog
注意:这里的hive-version要和你的hive版本以及hive-exec-1.2.1包的都要保持一致

execution:
    planner: blink
    ...
    current-catalog: myhive  # set the HiveCatalog as the current catalog of the session
    current-database: mydatabase
    
catalogs:
   - name: myhive
     type: hive
     hive-conf-dir: /opt/hive-conf
     hive-version: 1.2.1
		 

步骤7,启动 sql-client


./sql-client.sh embedded

//出现以下情况表示启动成功

Command history file path: /root/.flink-sql-history
                                   ▒▓██▓██▒
                               ▓████▒▒█▓▒▓███▓▒
                            ▓███▓░░        ▒▒▒▓██▒  ▒
                          ░██▒   ▒▒▓▓█▓▓▒░      ▒████
                          ██▒         ░▒▓███▒    ▒█▒█▒
                            ░▓█            ███   ▓░▒██
                              ▓█       ▒▒▒▒▒▓██▓░▒░▓▓█
                            █░ █   ▒▒░       ███▓▓█ ▒█▒▒▒
                            ████░   ▒▓█▓      ██▒▒▒ ▓███▒
                         ░▒█▓▓██       ▓█▒    ▓█▒▓██▓ ░█░
                   ▓░▒▓████▒ ██         ▒█    █▓░▒█▒░▒█▒
                  ███▓░██▓  ▓█           █   █▓ ▒▓█▓▓█▒
                ░██▓  ░█░            █  █▒ ▒█████▓▒ ██▓░▒
               ███░ ░ █░          ▓ ░█ █████▒░░    ░█░▓  ▓░
              ██▓█ ▒▒▓▒          ▓███████▓░       ▒█▒ ▒▓ ▓██▓
           ▒██▓ ▓█ █▓█       ░▒█████▓▓▒░         ██▒▒  █ ▒  ▓█▒
           ▓█▓  ▓█ ██▓ ░▓▓▓▓▓▓▓▒              ▒██▓           ░█▒
           ▓█    █ ▓███▓▒░              ░▓▓▓███▓          ░▒░ ▓█
           ██▓    ██▒    ░▒▓▓███▓▓▓▓▓██████▓▒            ▓███  █
          ▓███▒ ███   ░▓▓▒░░   ░▓████▓░                  ░▒▓▒  █▓
          █▓▒▒▓▓██  ░▒▒░░░▒▒▒▒▓██▓░                            █▓
          ██ ▓░▒█   ▓▓▓▓▒░░  ▒█▓       ▒▓▓██▓    ▓▒          ▒▒▓
          ▓█▓ ▓▒█  █▓░  ░▒▓▓██▒            ░▓█▒   ▒▒▒░▒▒▓█████▒
           ██░ ▓█▒█▒  ▒▓▓▒  ▓█                █░      ░░░░   ░█▒
           ▓█   ▒█▓   ░     █░                ▒█              █▓
            █▓   ██         █░                 ▓▓        ▒█▓▓▓▒█░
             █▓ ░▓██░       ▓▒                  ▓█▓▒░░░▒▓█░    ▒█
              ██   ▓█▓░      ▒                    ░▒█▒██▒      ▓▓
               ▓█▒   ▒█▓▒░                         ▒▒ █▒█▓▒▒░░▒██
                ░██▒    ▒▓▓▒                     ▓██▓▒█▒ ░▓▓▓▓▒█▓
                  ░▓██▒                          ▓░  ▒█▓█  ░░▒▒▒
                      ▒▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▓▓  ▓░▒█░
          
    ______ _ _       _       _____  ____  _         _____ _ _            _  BETA   
   |  ____| (_)     | |     / ____|/ __ \| |       / ____| (_)          | |  
   | |__  | |_ _ __ | | __ | (___ | |  | | |      | |    | |_  ___ _ __ | |_ 
   |  __| | | | _ \| |/ /  \___ \| |  | | |      | |    | | |/ _ \ _ \| __|
   | |    | | | | | |      ____) | |__| | |____  | |____| | |  __/ | | | |_ 
   |_|    |_|_|_| |_|_|\_\ |_____/ \___\_\______|  \_____|_|_|\___|_| |_|\__|
          
        Welcome! Enter &apos;HELP;&apos; to list all available commands. &apos;QUIT;&apos; to exit.


>Flink SQ

步骤8,启动成功后我们录入一个kafka的元数据(这个kafak前提是可以连接通)

Flink SQL> show catalogs;
default_catalog
myhive

Flink SQL> use catalog myhive;

Flink SQL> show databases;
default
dim
dm
dw
dwd
hive_bak
myhive
ods
qa_dev
qa_pro
st




Flink SQL>  CREATE TABLE UserScores (requestId STRING,recordCount STRING)
   WITH (
     'connector' = 'kafka',
     'topic' = 'nima',
     'properties.bootstrap.servers' = '192.168.120.130:9092',
     'properties.group.id' = 'testGroup1',
     'format' = 'json',
     'scan.startup.mode' = 'group-offsets');
		 
		 
>Flink SQ		 select * from userscores;

//会出现具体的kafka的查询结果
		 

步骤8,怎么用java来访问这个数据库呢

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.setParallelism(1);
        StreamTableEnvironment tEnv = StreamTableEnvironment.create(env);
        String name = "myhive";
        String defaultDatabase = "default";
        String hiveConfDir = "/opt/app";

        HiveCatalog hive = new HiveCatalog(name, defaultDatabase, hiveConfDir);
        tEnv.registerCatalog("myhive", hive);

        tEnv.useCatalog("myhive");
      
        tEnv.useDatabase("default");
        tEnv.sqlQuery("select * from userscores").execute().print();

注意:1.请使用1.8的jdk不要问为什么都是泪

2.启动过程中遇到各种错一般都是jar包的问题耐心查看

3.启动sql-client的前提是先启动了flink

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘎子吱吱吱吱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值