others linux服务器运维 django3 监控 k8s golang 数据库 大数据 前端 devops 理论基础 java oracle 运维日志

Flink hive

访问量:2068 创建时间:2021-10-13
我的环境版本
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参数。

登陆评论: 使用GITHUB登陆