我的环境版本 |
---|
HDFS 2.7.3 |
Hive 1.2.1000 |
Flink 1.14 |
官网链接:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/connectors/table/hive/overview/
Flink与hive集成体现在2个方面 |
---|
第一个是利用 Hive Metastore 的catalog存储 Flink 的HiveCatalog,用于跨会话存储 Flink 特定的元数据。例如,用户可以使用 将他们的 Kafka 或 ElasticSearch 表存储在 Hive Metastore 中HiveCatalog,然后在 SQL 查询中重用它们。 |
提供 Flink 作为读写 Hive 表的替代引擎。在HiveCatalog被设计成“开箱即用”与现有的hive安装兼容。您不需要修改现有的 Hive Metastore 或更改表的数据放置或分区。 |
支持的hive版本请查看官网说明。
#下载对应环境版本的jar包
[hive@client1 flink-1.14.0]$ cd lib/
[hive@client1 lib]$ pwd
/hadoop/flink/flink-1.14.0/lib
[hive@client1 lib]$ wget https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-hive-1.2.2_2.11/1.14.0/flink-sql-connector-hive-1.2.2_2.11-1.14.0.jar
依赖jar包的配置,因为继承hive需要一些hive等不同版本的包,不同hive版本与flink版本所需要的包也不一样,根据官网提示查找自己的包,这些包一般在你的大数据平台安装的hive\spark等lib目录下面能找到。
/flink-1.14.0/lib 下面需要的包 |
---|
// Flink's Hive connector flink-connector-hive_2.11-1.14.0.jar |
// Hive dependencies hive-metastore-1.2.1.jar hive-exec-1.2.1.jar libfb303-0.9.2.jar // libfb303 is not packed into hive-exec in some versions, need to add it separately |
// Orc dependencies -- required by the ORC vectorized optimizations orc-core-1.4.3-nohive.jar aircompressor-0.8.jar // transitive dependency of orc-core |
// add antlr-runtime if you need to use hive dialect antlr-runtime-3.5.2.jar |
###flink-connector-hive_2.11-1.14.0.jar 根据官方依赖提示,下载对应版本
###https://repo.maven.apache.org/maven2/org/apache/flink/flink-connector-hive_2.11/1.14.0/
[root@client1 flink-1.14.0]# mv /root/flink-connector-hive_2.11-1.14.0.jar lib/
##hive的依赖包
[root@client1 flink-1.14.0]# cp /usr/hdp/2.6.5.0-292/hive/lib/hive-metastore-1.2.1000.2.6.5.0-292.jar lib/
[root@client1 flink-1.14.0]# cp /usr/hdp/2.6.5.0-292/hive/lib/hive-exec-1.2.1000.2.6.5.0-292.jar lib/
[root@client1 flink-1.14.0]# cp /usr/hdp/2.6.5.0-292/hive/lib/libfb303-0.9.3.jar lib/
###Orc dependencies -- required by the ORC vectorized optimizations
[root@client1 flink-1.14.0]# cp /usr/hdp/2.6.5.0-292/spark2/jars/aircompressor-0.8.jar lib/
[root@client1 flink-1.14.0]# cp /usr/hdp/2.6.5.0-292/spark2/jars/orc-core-1.4.3.2.6.5.0-292-nohive.jar lib/
Flink sql连接hive(如果 你的hadoop集群启用了 kerberos认证, 需要在本地kinit 有hive权限的用户,这个过程本文档省略了); 连接hive的方法官网提供了java\scala\python\yaml\sql几种方法,下面演示在命令行通过sql cli连接。
[hive@client1 flink-1.14.0]$ ./bin/sql-client.sh
Flink SQL> CREATE CATALOG myhive WITH (
> 'type' = 'hive',
> 'default-database' = 'default',
> 'hive-conf-dir' = '/usr/hdp/current/hive-client/conf'
> );
[INFO] Execute statement succeed.
Flink SQL> show catalogs;
+-----------------+
| catalog name |
+-----------------+
| default_catalog |
| myhive |
+-----------------+
2 rows in set
Flink SQL> use catalog myhive;
[INFO] Execute statement succeed.
Flink SQL> show databases;
+---------------+
| database name |
+---------------+
| apd |
| cc |
| cert |
| crm |
| datax |
| default |
| dim |
| scan |
| temp |
| test |
| test_add |
| test_channel |
| test_datax |
+---------------+
26 rows in set
问题:在参考其它文档时发现可以配置conf/sql-client-hive.yaml文件,然后通过bin/sql-client.sh embedded -d conf/sql-client-hive.yaml来与hive连接,我在1.14版本配置多次,没有用,也没有发现sql-client.sh有 -d参数。