暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Flink1.13.5 SQL与Hive集成开发

大数据研习社 2022-05-10
855

长按二维码关注

大数据领域必关注的公众号

By大数据研习社

概要:与老版本相比,Flink1.13版本与Hive集成配置有一些变化,从Flink1.13开始移除了sql-client-defaults.yml配置⽂件,catalog相关配置可以放在新增的sql-init.sql文件来配置。


1 添加依赖包

Flink SQL与Hive集成需要添加相关依赖包如下所示:
#Flink与hadoop兼容包
flink-shaded-hadoop-2-uber-2.8.3-10.0.jar
#Flink与hive集成包
flink-sql-connector-hive-2.3.6_2.11-1.13.6.jar
#其他依赖包(在hadoop安装目录的shere/hadoop/common目录下)
commons-configuration-1.6.jar
commons-logging-1.1.3.jar
hadoop-auth-2.9.2.jar
hadoop-common-2.9.2.jar
hadoop-mapreduce-client-common-2.9.2.jar
hadoop-mapreduce-client-core-2.9.2.jar
hadoop-mapreduce-client-hs-2.9.2.jar
hadoop-mapreduce-client-jobclient-2.9.2.jar
htrace-core4-4.1.0-incubating.jar
javax.servlet-api-3.1.0.jar
woodstox-core-5.0.3.jar
stax2-api-3.1.4.jar
commons-codec-1.4.jar

2 修改flink配置文件

在Flink安装目录的conf目录下,修改flink-conf.yaml配置文件,添加如下内容:
classloader.check-leaked-classloader: false

3 准备SQL Client初始化脚本

准备初始化脚本init.sql,并将init.sql文件放入Flink的conf目录下。
CREATE CATALOG MyCatalog
  WITH (
    'type' = 'hive',
    'default-database'='default',
    'hive-conf-dir'='/home/hadoop/app/hive/conf',
    'hive-version'='2.3.6'
  );
USE CATALOG MyCatalog;
SET 'execution.runtime-mode' = 'batch';
SET 'sql-client.execution.result-mode' = 'table';
SET 'table.sql-dialect'='hive';

初始化脚本中我们创建了hive catalog,相关配置项如下:


4 启动metastore服务

由于Flink SQL是通过metastore服务来访问Hive的MySQL数据库管理元数据,所以首先需要启动Hive的metastore服务:
bin/hive --service metastore

5 启动Flink集群服务

通过一键启动脚本启动Flink集群服务:
bin/start-cluster.sh

6 启动Flink SQL Cli

启动SQL Client时通过-i选项指定初始化脚本即可:
bin/sql-client.sh -i conf/sql-init.sql

注意:Flink1.13开始移除了sql-client-defaults.yml配置⽂件,所以在该配置⽂件配置catalog的⽅法就不存在了,目前相关配置添加到sql-init.sql文件即可。

7 Flink SQL与Hive集成操作

7.1 catalog操作
#查看catalog
Flink SQL>show catalogs;

#使用catalog
Flink SQL>use catalog MyCatalog;

7.2 database操作
#查看database
Flink SQL>show databases;

#使用database
Flink SQL>use test;

7.3 table操作
#查看table
Flink SQL>show tables;

#查询table
Flink SQL>select * from MyCatalog.test.stu;

备注:MyCatalog为catalog,test为Hive中的数据库,stu为test中的表。

7.4 案例
1.创建hive dialect方言的表
Flink目前支持两种SQL方言(SQL dialects),分别为:default和hive。默认的SQL方言是default,如果要使用Hive的语法,需要将SQL方言切换到hive。
Flink SQL>set table.sql-dialect=hive;
Flink SQL>CREATE TABLE hive_dialect_clicklog(`user` STRING,`url` STRING,`cTime` STRING);

2.插入测试数据
Flink SQL>insert into hive_dialect_clicklog select 'Mary','./prod?id=7','2022-02-02 12:01:45';

3.查询表数据
在Hive客户端可以查询Flink SQL中创建的表及插入的数据。
#进入test数据库
hive>use test;
hive>select * from hive_dialect_clicklog;

备注:hive_dialect_clicklog为Flink SQL创建的表,该表的元数据信息存储在MySQL数据库,所以即使Flink SQL重启后,一样可以在Hive中查询hive_dialect_clicklog表中的数据。
欢迎点赞 + 收藏 + 在看  素质三连 


往期精彩回顾
程序员,如何避免内卷
Apache 架构师总结的 30 条架构原则
【全网首发】Hadoop 3.0分布式集群安装
大数据运维工程师经典面试题汇总(附带答案)
大数据面试130题
某集团大数据平台整体架构及实施方案完整目录
大数据凉凉了?Apache将一众大数据开源项目束之高阁!
实战企业数据湖,抢先数仓新玩法
Superset制作智慧数据大屏,看它就够了
Apache Flink 在快手的过去、现在和未来
华为云-基于Ambari构建大数据平台(上)
华为云-基于Ambari构建大数据平台(下)
【HBase调优】Hbase万亿级存储性能优化总结
【Python精华】100个Python练手小程序
【HBase企业应用开发】工作中自己总结的Hbase笔记,非常全面!
【剑指Offer】近50个常见算法面试题的Java实现代码

长按识别左侧二维码

     关注领福利    

  领10本经典大数据书

文章转载自大数据研习社,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论