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里面的表结构。