Flink1.4集成Hive3.12指南

flink 版本 flink-1.14.4 hive 版本 hive-3.12 scala 版本 scala-2.12 scala版本按照自己实际情况,我这里是2.12

Flink下载链接: 链接: . https://flink.apache.org/zh/downloads.html#apache-flink-1144 https://dlcdn.apache.org/flink/flink-1.14.4/flink-1.14.4-bin-scala_2.12.tgz

依赖包下载: 1.flink-sql-connector-hive-3.1.2 https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-hive-3.1.2_2.12/1.14.4/flink-sql-connector-hive-3.1.2_2.12-1.14.4.jar 2.flink-connector-hive_2.12-1.14.4.jar https://repo.maven.apache.org/maven2/org/apache/flink/flink-connector-hive_2.12/1.14.4/flink-connector-hive_2.12-1.14.4.jar 3.hive-exec-3.1.2.jar https://repo1.maven.org/maven2/org/apache/hive/hive-exec/3.1.2/hive-exec-3.1.2.jar 4.antlr-runtime-3.5.2.jar https://repo1.maven.org/maven2/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2.jar

需要添加的包如下图 这些是需要添加到lib目录下面的jar包,其中flink-connector-hive_2.12-1.14.4.jar和hive-exec-3.1.2.jar要删除jar包里面的googel目录,不然会和hadoop中的jar冲突。

把依赖包解压到flink_home 的lib下面之后,服务器添加环境变量:

#FLINK_HOME
export FLINK_HOME=/data/module/flink-1.14.4
export HADOOP_CLASSPATH=`hadoop classpath`
export PATH=$PATH:$FLINK_HOME/bin
hive-site.xml需要添加配置
<property>
	<name>hive.metastore.uris</name>
	<value>thrift://dev1:9083</value>
</property>

flink-conf.yaml配置如下:

修改了一个task可以使用2个slot
taskmanager.numberOfTaskSlots: 2
增加一行
classloader.check-leaked-classloader: false

在$flink_home/bin/config.sh中第一行也添加了 以下环境变量

export HADOOP_CLASSPATH=`hadoop classpath`

在$flink_home/conf 添加hive配置文件 hive-conf-dir和hadoop-conf-dir根据自己组件实际部署位置

vim sql-conf.sql

CREATE CATALOG myhive WITH (
    type = hive,
    default-database = default,
    hive-conf-dir = /data/module/apache-hive-3.1.2-bin/conf,
    hadoop-conf-dir = /data/module/hadoop-3.1.4/etc/hadoop
);
-- set the HiveCatalog as the current catalog of the session
USE CATALOG myhive;

配置文件和依赖的jar都操作完成后,就可以开始启动了 执行命令

./sql-client.sh embedded -i ../conf/sql-conf.sql

show databases; 能看到hive里面的表结构。

经验分享 程序员 微信小程序 职场和发展