FlinkSQL 整合 Hive

FlinkSQL 整合 Hive

介绍

Flink 从 1.9 开始支持集成 Hive,不过 1.9 版本为 beta 版,不推荐在生产环境 中使用。
在 Flink1.10 版本中,标志着对 Blink 的整合宣告完成,对 Hive 的集成 也达到了生产级别的要求。
这里使用的 Flink 是 1.13.0,Hive 是 3.1.2。

Flink 与 Hive 的集成方式

Flink 与 Hive 的集成主要体现在以下两个方面:
1.持久化元数据 Flink 利 用 Hive 的 MetaStore 作 为 持 久 化 的 Catalog , 我 们 可 通 过 HiveCatalog 将不同会话中的 Flink 元数据存储到 Hive Metastore 中。例如,我们可以使用 HiveCatalog 将其 Kafka 的数据源表存储在 Hive Metastore 中,这样该表的元数据信息会被持久化到 Hive 的 MetaStore 对应的元数据库中,在后续的 SQL 查询中,我们可以重复使用它们。
2.利用 Flink 来读写 Hive 的表 Flink 打通了与 Hive 的集成,如同使用 SparkSQL 或者 Impala 操作 Hive 中的 数据一样,我们可以使用 Flink 直接读写 Hive 中的表。 HiveCatalog 的设计提供了与 Hive 良好的兼容性,用户可以”开箱即用”的访 问其已有的 Hive 表。不需要修改现有的 Hive Metastore,也不需要更改表的数 据位置或分区。

具体配置

1.在环境变量/etc/profile 中添加配置:(三台节点都配置)
export HADOOP_CLASSPATH=hadoop classpath
source /etc/profile
2.下载对应的 jar,上传到 Flink 的 lib 目录下
https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/connectors/ta ble/hive/overview/
在这里插入图片描述
3.将以下包都添加到flink的lib目录下
在这里插入图片描述
antlr-runtime-3.5.2.jar、hive-exec-3.1.2.jar、libfb303-0.9.3.jar都是官方要求的jar包,可以从hive的lib目录下直接拷贝到flink的lib下。
guava-27.0-jre.jar不是官方要求的,但是不加的话,在启动sqlclient的时候,会报(ZLjava/lang/String;Ljava/lang/Object;)V异常。
flink-json-1.13.0.jar(为了后期使用FlinkSQL解析Json数据添加的jar包)、flink-connector-hive_2.12-1.13.0.jar、flink-sql-connector-kafka_2.12-1.13.0.jar(为了后期使用FlinkSQL读取Kafka做实时处理添加的jar包),可以通过在pom文件中添加以下依赖,先下载到maven仓库,再拖到flink的lib目录下。
4.将flink的lib目录同步分发给其他节点

<dependency>
	<groupId>org.apache.flink</groupId>
	<artifactId>flink-sql-connector-kafka_2.12</artifactId>
	<version>${flink.version}</version>
</dependency>
<dependency>
	groupId>org.apache.flink</groupId>
	<artifactId>flink-json</artifactId>
	<version>${flink.version}</version>
</dependency>
<dependency>
	<groupId>org.apache.flink</groupId>
	<artifactId>flink-connector-hive_2.12</artifactId>
	<version>${flink.version}</version>
</dependency>

5.修改hive的配置文件vihive-site.xml:

<property>
	<name>hive.metastore.uris</name>
	<value>thrift://localhost:9083</value>
</property>

6.启动hive元数据服务:

nohuphive--servicemetastore&

7.修改flinksql配置:
在Flink1.13之后默认没有此配置文件了,需要从其他版本的包中拷贝,我是从flink1.12.4中拷贝的
注意:♥
catalogs:#把这里的[]删除掉

vi/usr/software/flink-1.13.0/conf/sql-client-defaults.yaml
catalogs:#把这里的[]删除掉
-name:myhive
type:hive
hive-conf-dir:/usr/software/hive-3.1.2/conf
default-database:t1#hive中已经存在的数据库

在这里插入图片描述
8.启动flink集群:

start-cluster.sh

9.启动flink-sql客户端:

sql-client.shembedded

如果出现了:org.codehaus.janino.CompilerFactory cannot be cast to org.codehaus.commons.compiler.ICompilerFactory异常。
在flink-conf.yaml中修改:classloader.resolve-order:parent-first
10.查看注册的catalogs:
showcatalogs;
在这里插入图片描述
11.使用注册的myhivecatalog

usecatalogmyhive;

12.查看hive的数据库:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值