本文為您介紹在獨享Blink中如何創建實時數倉Hologres源表。
使用說明
Hologres源表默認使用批模式讀取數據,即對全表數據僅掃描一次。掃描結束,消費即結束,掃描結束后輸入的數據將不會被Hologres源表讀取。如果您需要使用實時消費Hologres的數據,請參見訂閱Hologres Binlog。
使用限制
Hologres支持使用Holo-blink Connector將Hologres表作為源表讀取數據并進行維表Join,其使用限制如下:
默認只能讀取行存儲格式的表數據。如果要讀取列存儲格式表的數據,需要配置
bulkread='true'
。創建行存儲表時,如果該表設置了主鍵,必須將主鍵配置為clustering key才能工作。Hologres創建源表的示例語句如下。
begin; create table test(a int primary key, b text, c text[], d float8, e int8); call set_table_property('test', 'orientation', 'row'); call set_table_property('test', 'clustering_key', 'a'); commit;
Blink獨享模式3.6以下的版本未支持Hologres數據源,您需要使用Hologres Connector,并引用相關JAR文件,才可以進行作業。請您加入實時數倉Hologres交流群聯系對應的技術支持獲取JAR文件,并在作業中使用如下DDL語句創建Hologres源表,詳情請參見如何獲取更多的在線支持?。
DDL定義
Blink獨享模式3.6及以上版本支持Hologres數據源,其創建Hologres源表的DDL語句如下所示。
CREATE TABLE holo_dim_table ( pk VARCHAR ,seller_id VARCHAR ,seller_bc_type VARCHAR ,seller_tag VARCHAR ,PRIMARY KEY (pk) ) with ( type = 'hologres', `endpoint` = '<yourEndpoint>', --當前Hologres實例VPC網絡的Endpoint。 `username` = '<yourUsername>', --當前阿里云賬號的AccessKey ID。 `password` = '<yourPassword>', --當前阿里云賬號的AccessKey Secret。 `dbname` = '<yourDbname>', --Hologres的數據庫名稱。 `tablename` = '<yourTablename>', --Hologres用于接收數據的表名稱。 `bulkread`='true' );
With參數的描述如下表所示。
參數 | 描述 | 是否必填 |
type | 數據源類型。 默認為hologres。 | 是 |
dbname | Hologres的數據庫名稱。 | 是 |
tablename | Hologres用于接收數據的表名稱。 | 是 |
username | 當前阿里云賬號的AccessKey ID。 您可以登錄AccessKey 管理,獲取AccessKey ID。 | 是 |
password | 當前阿里云賬號的AccessKey Secret。 您可以登錄AccessKey 管理,獲取AccessKey Secret。 | 是 |
endpoint | Hologres的VPC網絡地址。 您可以登錄Hologres管控臺,進入目標實例的詳情頁,在網絡信息中獲取Endpoint。Endpoint需包含端口號,格式為ip:port。 | 是 |
bulkread | 參數取值如下:
說明 如果您需要使用Hologres的列存儲表作為源表進行作業,則需要配置該參數為true。 | 是 |
數據類型映射
Blink獨享的數據類型與Hologres的數據類型映射,請參見數據類型匯總。
Blink實時消費Hologres Binlog
實時計算Blink 3.7及以上版本,支持Hologres Connector實時消費Binlog,請參見Flink/Blink實時消費Hologres Binlog。