Blog
flink-43 catalog
catalog提供了元数据信息,例如数据库、表、分区、视图以及其他外部系统中存储的函数和信息
catalog允许用户引用数据存储系统中现有的元数据,并自动将其映射到flink的相应元数据,比如flink使用hive metastore
目前flink包含以下四种catalog
- GenericInMemoryCatalog:基于内存实现的catalog
- 所有元数据旨在session的生命周期内可用
- 即一个flink任务一次运行生命周期内
- 默认自动创建 会有名为default_catalog的内存Catalog
- 这个Catalog会有一个名为default_database的数据库
- 所有元数据旨在session的生命周期内可用
- JdbcCatalog:用户可以将flink通过jdbc协议连接到关系数据库
- Postgres Catalog 和Mysql Catalog是目前仅有的两种JDBC Catalog实现
- 元数据存储在数据库中
- 不支持建表,只是打通flink与mysql的连接,可以去读写mysql现有的库表
- HiveCatalog
- 用途一:单纯作为flink元数据的持久化
- 用途二:作为读写现有Hive元数据的接口
- hive metastore以小写形式存储所有元数据对象名称,以小写形式存储所有元对象名称
- GenericInMemoryCatalog区分大小写
- 自定义Catalog
创建 jdbcCatalog
可以在sql-client初始化文件中添加jdbcCatalog然后use即可
HiveCataglog
(1)上传所需jar到lib目录下
- flink-sql-connector-hive-3.1.2_2.12-1.17.1.jar
- mysql-connector-j-8.0.31.jar
(2)更换planner依赖
只有在使用hive方言或hiveserver2时才需要这样额外的计划器jar移动,替换flink-table-planner-loader-1.17.1.jar
mv /data/flink/opt/flink-table-planner_2.12-1.17.1.jar /data/flink/lib/
mv /data/flink/lib/flink-table-planner-loader-1.17.1.jar /data/flink/opt/
(3)重启flink集群和sql-client
(4)启动外置的hive metastore服务
hive metastore必须作为独立服务运行,也就是hive-site中必须配置hive.metastore.uris
hive --service metastore &
CREATE CATALOG myhive WITH (
'type'='hive',
'default-database'='default',
'hive-conf-dir'='/data/hive-3.1.3/conf'
);