玩转大数据hiveFlink

Flink 使用之连接 Hive metastore

2022-07-13  本文已影响0人  AlienPaul

Flink 使用介绍相关文档目录

Flink 使用介绍相关文档目录

前言

Flink SQL很大程度上简化了业务的开发工作量。但是Flink默认的配置,维护表的元数据信息仍然有局限性。Flink默认使用GenericInMemoryCatalog。所有的元数据仅在session范围内存活,一旦作业遇到故障恢复或者是停机等(session被kill掉),所有表信息都会丢失,造成很大的不便。我们需要一个稳定独立的外部组件来存储表的元数据信息。Hadoop生态系统经过多年的发展,Hive metastore事实上已成为元数据存储中心。无论Hive自身,还是Flink, Spark,都采用Hive metastore作为元数据存储。从根本上解决了上述问题。本篇为大家分享如何使用Flink连接Hive metastore并查询Hive表。

准备工作

根据需要配合使用的Hive版本,添加对应的依赖到Flink的lib目录中。具体参见官网:https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/connectors/table/hive/overview/#user-defined-dependencies

这里以支持Hive 3.1.0为例,需要准备如下jar包:

Yaml 方式配置

Yaml方式的好处是启动Flink SQL client的时候自动加载Hive metastore的配置,不需要每次启动的时候去创建。使用起来类似于Spark SQL & Hive metastore。

编辑$FLINK_HOME/conf/sql-client-defaults.yaml,添加如下内容:

catalogs:
   - name: myhive
     type: hive
     default-database: default
     hive-conf-dir: /usr/hdp/3.0.1.0-187/hive/conf/

配置项的解释如下:

然后启动sql client:

export HADOOP_CLASSPATH=`hadoop classpath`

./sql-client.sh embedded -s yarn-session

启动的时候注意这两行日志:

Searching for '/path/to/flink_home/conf/sql-client-defaults.yaml'...found.
Reading default environment from: file:/path/to/flink_home/conf/sql-client-defaults.yaml

看到这两行日志并且启动没有异常,说明Hive catalog配置成功。

我们查看一下hive catalog是否已经被加载。执行下面SQL列出目前存在的catalog:

Flink SQL> show catalogs;
+-----------------+
|    catalog name |
+-----------------+
| default_catalog |
|          myhive |
+-----------------+
2 rows in set

这里myhive就是上面配置的Hive catalog。

接下来使用下面SQL,切换到Hive catalog:

Flink SQL> use catalog myhive;
[INFO] Execute statement succeed.

然后我们找一张Hive表查询,观察是否可以获取到数据:

show tables;

select * from table_xxx;

SQL 方式配置

这种方式不需要额外的配置文件。但是每次使用Flink SQL的时候都需要创建,才可以使用。

启动SQL client的方式和上面的相同。启动成功之后,执行创建catalog的SQL语句。

CREATE CATALOG myhive WITH (
    'type' = 'hive',
    'default-database' = 'mydatabase',
    'hive-conf-dir' = '/opt/hive-conf'
);

-- 使用myhive catalog
USE CATALOG myhive;

create catalog语句的参数解释和上面Yaml配置文件的参数含义相同,不再赘述。

参考文献

https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/connectors/table/hive/overview/#connecting-to-hive

上一篇下一篇

猜你喜欢

热点阅读