Flink全託管產品(Flink Serverless)是基於Apache Flink構建的全託管產品,為您提供全託管的Realtime Compute服務。Hologres與Flink全託管高度相容,支援Hologres源表、維表和結果表,以及Catalog等功能,滿足一站式即時數倉建設。本文為您介紹如何使用Hologres作為Flink全託管的上下遊儲存。
Hologres源表、維表和結果表
在Flink全託管中支援Hologres源表、維表和結果表,詳細的使用說明請參見即時數倉Hologres。
Flink即時消費Binlog
Hologres Connector支援即時消費Binlog,從VVR 6.0.3版本開始支援JDBC模式的流式源表,相比Holohub模式,支援更多的資料類型以及支援自訂帳號,詳情請參見Flink即時消費Binlog。
Hologres Catalog
Flink全託管支援Hologres Catalog,在Flink全託管控制台直接讀取Hologres中繼資料,不用再手動註冊Hologres表,可以提高作業開發的效率且能保證表結構的正確性,詳情請參見管理Hologres Catalog。
基於Hologres Catalog,目前全託管的Flink已經支援模型演化(schema evolution)以及整庫同步能力,詳情請參見CREATE TABLE AS(CTAS)語句和CREATE DATABASE AS(CDAS)語句。
Hologres DataStream Connector
如果您通過DataStream的方式讀寫Hologres資料,則需要使用Hologres DataStream Connector串連Flink全託管,詳情請參見Hologres DataStream Connector。
資料類型映射
Flink全託管與Hologres的資料類型映射,請參見資料類型匯總。
不論是將Hologres作為源表、維表還是結果表,在Flink的SQL作業中,都要將資料定義為Flink的資料類型。只有在Hologres中建立內部表時,才需要定義為Hologres的資料類型。
如果期望使用Flink將JSON資料寫入Hologres,則在Flink SQL作業中,需要將源表、結果表中的該列都定義為VARCHAR類型,僅在Hologres內部表中將其定義為JSONB類型,樣本如下:
Hologres建立內部表:message定義為JSONB類型。
BEGIN ; DROP TABLE IF EXISTS holo_internal_table; CREATE TABLE IF NOT EXISTS holo_internal_table ( id BIGINT NOT NULL, message JSONB NOT NULL ); CALL set_table_property('holo_internal_table', 'distribution_key', 'id'); COMMIT ;
Flink作業:源表、結果表的message都定義為VARCHAR類型。
CREATE TEMPORARY TABLE randomSource ( id BIGINT, message VARCHAR ) WITH ('connector' = 'datagen'); CREATE TEMPORARY TABLE sink_holo ( id BIGINT, message VARCHAR ) WITH ( 'connector' = 'hologres', 'endpoint' = '', 'username' = '', 'password' = '', 'dbname' = '', 'tablename' = 'holo_internal_table' ); INSERT INTO sink_holo SELECT 1, '{"k":"v"}' FROM randomSource;
Connector Release Note
版本說明請參見Hologres Connector Release Note。
常見問題
Flink全託管使用過程中,常見問題及解決方案請參見Blink和Flink常見問題及診斷。