flink catalog 之 flink-catalog-in-jdbc

開(kāi)發(fā)思路

運(yùn)行環(huán)境全面升級(jí)到j(luò)dk11后,原基于hive catalog的flink catlog不能再使用,原因是現(xiàn)在hive所有版本都不支持jdk11,但在大趨勢(shì)下jdk版本已不可能回退到j(luò)dk1.8了,在這種情況下是否可以開(kāi)發(fā)一個(gè)不依賴hive的flink catalog呢?

flink默認(rèn)catalog是保存在內(nèi)存中,關(guān)鍵類是GenericInMemoryCatalog.java,這個(gè)類實(shí)現(xiàn)了元數(shù)據(jù)管理的所有方法,如果利用這些已實(shí)現(xiàn)的方法,只增加對(duì)內(nèi)存中元數(shù)據(jù)持久化方法可以減少很工作量,同時(shí)也避免了重復(fù)造輪子。

flink-catalog-in-jdbc基于繼承GenericInMemoryCatalog實(shí)現(xiàn),將元數(shù)據(jù)保存到j(luò)dbc中,從而解除了flink對(duì)hive的依賴。

項(xiàng)目地址

項(xiàng)目地址:https://github.com/jeff-zou/flink-catalog-in-jdbc.git
無(wú)法翻墻:https://gitee.com/jeff-zou/flink-catalog-in-jdbc.git

使用方法

1.引入包

<dependency>
    <groupId>io.github.jeff-zou</groupId>
    <artifactId>flink-catalog-in-jdbc</artifactId>
    <version>1.2</version>
</dependency>

2.數(shù)據(jù)庫(kù)創(chuàng)建表


CREATE TABLE `flink_catalog_databases` (
  `comment` varchar(100) DEFAULT NULL COMMENT '1',
  `properties` varchar(100) DEFAULT NULL,
  `database_name` varchar(100) DEFAULT NULL,
  UNIQUE KEY `flink_catalog_databases_un` (`database_name`)
) ;

CREATE TABLE `flink_catalog_tables` (
  `script` varchar(5000) DEFAULT NULL COMMENT '1',
  `object_name` varchar(100) DEFAULT NULL,
  `database_name` varchar(100) DEFAULT NULL,
  `kind` varchar(20) DEFAULT NULL,
  `comment` varchar(200) DEFAULT NULL,
  UNIQUE KEY `flink_catalog_databases_un` (`database_name`,`object_name`)
);

CREATE TABLE `flink_catalog_functions` (
  `database_name` varchar(100) DEFAULT NULL,
  `object_name` varchar(100) DEFAULT NULL,
  `class_name` varchar(200) DEFAULT NULL COMMENT '1',
  `function_language` varchar(20) DEFAULT NULL,
  UNIQUE KEY `flink_catalog_functions_un` (`database_name`,`object_name`)
) ;

CREATE TABLE `flink_catalog_columns` (
  `database_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `object_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `column_name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `column_type` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `column_comment` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
  UNIQUE KEY `flink_catalog_columns_un` (`database_name`,`object_name`,`column_name`)
)

3.sql使用

create catalog  my_catalog with ( 'type'='generic_in_jdbc', 'default-database'='test', 'username'='test', 'password'='****',
'url'='jdbc:mysql://*****:3306/test_database?useUnicode=true&characterEncoding=utf8&autoReconnect=true');

use catalog my_catalog;
 
create database if not exists my_database;

use  my_database;

CREATE TABLE if not exists `test` (
                      `c1` VARCHAR(2147483647),
                      `id` INT NOT NULL,
                      `stime` TIMESTAMP(3),
                     `cost` as id * 10, "
                      WATERMARK FOR `stime` AS `stime` - INTERVAL '10' SECOND,
                      CONSTRAINT `PK_3386` PRIMARY KEY (`id`) NOT ENFORCED
                    ) "
                     comment 'test' "
                     partitioned by (c1)"
                     WITH (
                      'connector' = 'print'
                    ) ";
                    
 show create table test;                   

關(guān)注個(gè)人微信公眾號(hào):肌肉碼農(nóng),回復(fù)“好友”討論問(wèn)題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容