Flink, 大数据

flink-43 catalog

catalog提供了元数据信息,例如数据库、表、分区、视图以及其他外部系统中存储的函数和信息

catalog允许用户引用数据存储系统中现有的元数据,并自动将其映射到flink的相应元数据,比如flink使用hive metastore

目前flink包含以下四种catalog

  • GenericInMemoryCatalog:基于内存实现的catalog
    • 所有元数据旨在session的生命周期内可用
      • 即一个flink任务一次运行生命周期内
    • 默认自动创建 会有名为default_catalog的内存Catalog
      • 这个Catalog会有一个名为default_database的数据库
  • 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'
);