Hologres外部表
當(dāng)您需要訪問存儲在Hologres中的數(shù)據(jù)時(shí),MaxCompute支持使用外部表訪問Hologres數(shù)據(jù)源數(shù)據(jù),無需導(dǎo)入數(shù)據(jù)至MaxCompute中,實(shí)現(xiàn)快速查詢Hologres數(shù)據(jù)。本文為您介紹如何在外部表建表語句中指定Hologres數(shù)據(jù)源、STS認(rèn)證信息或打開雙簽名開關(guān)、映射目標(biāo)表、JDBC驅(qū)動信息,來創(chuàng)建Hologres外部表。
背景信息
Hologres是兼容PostgreSQL協(xié)議的實(shí)時(shí)交互式分析數(shù)據(jù)倉庫,在底層與MaxCompute無縫連接。
您可以使用在MaxCompute上創(chuàng)建Hologres外部表的方式,基于PostgreSQL JDBC驅(qū)動及STS認(rèn)證信息查詢Hologres數(shù)據(jù)源的數(shù)據(jù)。該方式無冗余存儲,無需導(dǎo)入導(dǎo)出數(shù)據(jù),可實(shí)現(xiàn)快速獲取查詢結(jié)果。
前提條件
創(chuàng)建Hologres外部表前,請確認(rèn)已經(jīng)滿足如下條件:
已準(zhǔn)備好Hologres數(shù)據(jù)庫及目標(biāo)表。
創(chuàng)建Hologres數(shù)據(jù)庫信息,請參見創(chuàng)建數(shù)據(jù)庫。
創(chuàng)建Hologres表信息,請參見CREATE TABLE。
假設(shè)已準(zhǔn)備好的Hologres實(shí)例信息如下:
Hologres數(shù)據(jù)庫名稱:
mc_test
。Hologres數(shù)據(jù)庫的Schema:
public
。Hologres數(shù)據(jù)庫經(jīng)典網(wǎng)絡(luò)連接地址:
hgprecn-cn-oew210ut****-cn-hangzhou-internal.hologres.aliyuncs.com:80
。Hologres表名稱:
holo
。表數(shù)據(jù)如下:
已準(zhǔn)備好待創(chuàng)建Hologres外部表的目標(biāo)MaxCompute項(xiàng)目。
創(chuàng)建MaxCompute項(xiàng)目信息,請參見創(chuàng)建MaxCompute項(xiàng)目。
已安裝MaxCompute客戶端。
更多安裝MaxCompute客戶端操作,請參見安裝并配置MaxCompute客戶端。
使用限制
Hologres外部表的使用限制如下:
MaxCompute不支持對創(chuàng)建的Hologres外部表執(zhí)行更新(UPDATE)、刪除(DELETE)操作。
Hologres的分區(qū)表和MaxCompute的分區(qū)表沒有對應(yīng)關(guān)系。Hologres外部表不支持分區(qū)。
當(dāng)您需要向Hologres外部表寫入大量數(shù)據(jù)時(shí),采用并行多進(jìn)程寫入方式,會小概率出現(xiàn)某個(gè)寫入進(jìn)程數(shù)據(jù)重寫情況,導(dǎo)致數(shù)據(jù)重復(fù)。
MaxCompute里建的Hologres外部表,其中DECIMAL數(shù)據(jù)類型默認(rèn)小數(shù)18位,不能修改,只能建成
decimal(38,18)
。如果小數(shù)位數(shù)比較少,可以在MaxCompute中建外部表時(shí)數(shù)據(jù)類型選擇String,使用的時(shí)候再使用cast
函數(shù)強(qiáng)制轉(zhuǎn)換后使用。MaxCompute創(chuàng)建的Hologres外部表,不支持Array,Map,Struct復(fù)雜數(shù)據(jù)類型。
在MaxCompute創(chuàng)建Hologres外部表時(shí),Hologres中有的JSON、JSONB、MONEY等數(shù)據(jù)類型,目前在MaxCompute沒有對應(yīng)的數(shù)據(jù)類型,暫時(shí)不支持。
Hologres外部表不支持cluster屬性。
注意事項(xiàng)
Hologres外部表使用過程中需要注意:
如果Hologeres開啟了IP白名單功能,用戶需要采用雙簽名模式創(chuàng)建Hologres外部表。如果用STS模式創(chuàng)建Hologres外部表,MaxCompute訪問Hologres時(shí)會被IP白名單攔截。
對于Hologres的父、子表,Hologres外部表中會指定表名,并執(zhí)行SQL語句。父、子表都可以映射至Hologres外部表,但是父表只能讀不能寫。
向Hologres外部表寫入數(shù)據(jù)時(shí),暫不支持Hologres的INSERT ON CONFLICT(UPSERT)機(jī)制。如果Hologres源表有主鍵,請避免寫入的數(shù)據(jù)與Hologres源表中的數(shù)據(jù)產(chǎn)生主鍵唯一性沖突。
建表時(shí),表名和字段名大小寫不敏感。在查詢表或字段時(shí),無需區(qū)分大小寫,且不支持強(qiáng)制轉(zhuǎn)換大小寫。
創(chuàng)建Hologres外部表語法
在創(chuàng)建外部表時(shí),您需要在建表DDL語句中指定StorageHandler,并配置STS認(rèn)證信息(或打開雙簽名開關(guān))、JDBC連接地址實(shí)現(xiàn)訪問Hologres數(shù)據(jù)源。建表語句定義如下。
STS模式創(chuàng)建Hologres外部表。
create external table [if not exists] <table_name>( <col1_name> <data_type>, <col2_name> <data_type>, ...... ) stored by '<com.aliyun.odps.jdbc.JdbcStorageHandler>' with serdeproperties ( 'odps.properties.rolearn'='<ram_arn>') location '<jdbc:postgresql://<endpoint>:<port>/<database>?ApplicationName=MaxCompute&[currentSchema=<schema>&][useSSL={true|false}&]table=<holo_table_name>/>' tblproperties ( 'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver', 'odps.federation.jdbc.target.db.type'='holo', ['odps.federation.jdbc.colmapping'='<col1:column1,col2:column2,col3:column3,...>'] );
雙簽名模式創(chuàng)建Hologres外部表。
雙簽名Hologres外部表支持相同RAM用戶可以訪問MaxCompute和Hologres對應(yīng)有權(quán)限的表,不需要再手工授權(quán)。同時(shí)支持HologresIP白名單能力,方便您使用。
--打開雙簽名開關(guān) set odps.sql.common.table.planner.ext.hive.bridge=true; --創(chuàng)建外部表 create external table [if not exists] <table_name>( <col1_name> <data_type>, <col2_name> <data_type>, ...... ) stored by '<com.aliyun.odps.jdbc.JdbcStorageHandler>' location'<jdbc:postgresql://<endpoint>:<port>/<database>?ApplicationName=MaxCompute&[currentSchema=<schema>&][useSSL={true|false}&]table=<holo_table_name>/>' tblproperties ( 'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver', 'odps.federation.jdbc.target.db.type'='holo', ['odps.federation.jdbc.colmapping'='<col1:column1,col2:column2,col3:column3,...>'] );
odps.sql.common.table.planner.ext.hive.bridge:通過雙簽名模式創(chuàng)建Hologres外部表必填;通過STS模式創(chuàng)建Hologres外部表不填。雙簽名開關(guān),值設(shè)置為
true
,表示打開雙簽名開關(guān),通過雙簽名模式創(chuàng)建Hologres外部表。if not exists:可選。如果不指定if not exists選項(xiàng)而存在同名表,會報(bào)錯(cuò)。如果指定if not exists,無論是否存在同名表,即使原表結(jié)構(gòu)與要創(chuàng)建的目標(biāo)表結(jié)構(gòu)不一致,均返回成功。已存在的同名表的元數(shù)據(jù)信息不會被改動。
table_name:必填。在MaxCompute上創(chuàng)建的Hologres外部表的名稱。
col_name:必填。Hologres外部表的列名稱。
data_type:必填。Hologres外部表的列的數(shù)據(jù)類型。
stored by:必填。指定StorageHandler,定義了如何查詢Hologres外部表。固定取值為
com.aliyun.odps.jdbc.JdbcStorageHandler
,使用JdbcStorageHandler連接方式。ram_arn:通過STS模式創(chuàng)建Hologres外部表必填;通過雙簽名模式創(chuàng)建Hologres外部表不填。指定RAM角色的ARN信息,用于創(chuàng)建外部表時(shí)STS認(rèn)證信息的填寫。您可以在RAM訪問控制頁面,單擊目標(biāo)RAM角色名稱后,在基本信息區(qū)域獲取。
location:必填。Hologres實(shí)例的JDBC連接地址。其中:
endpoint:必填。Hologres實(shí)例的經(jīng)典網(wǎng)絡(luò)域名。獲取方式,請參見實(shí)例配置。
port:必填。Hologres實(shí)例的網(wǎng)絡(luò)端口。獲取方式,請參見實(shí)例配置。
database:必填。連接的Hologres數(shù)據(jù)庫名稱。更多Hologres數(shù)據(jù)庫信息,請參見CREATE DATABASE。
ApplicationName:必填。默認(rèn)為MaxCompute,無需修改。
schema:可選。如果表名在Hologres數(shù)據(jù)庫內(nèi)是唯一的,或源表是默認(rèn)Schema中的表,可以不配置該屬性。更多Schema信息,請參見CREATE SCHEMA。
holo_table_name:必填。Hologres源表名稱。更多Hologres源表信息,請參見CREATE TABLE。
tblproperties:
mcfed.mapreduce.jdbc.driver.class:必填。指定連接Hologres數(shù)據(jù)庫的驅(qū)動程序。固定取值為
org.postgresql.Driver
。odps.federation.jdbc.target.db.type:必填。指定連接的數(shù)據(jù)庫類型。固定取值為
holo
。odps.federation.jdbc.colmapping:可選。如果需要將指定數(shù)據(jù)源的部分列映射至Hologres外部表,需要配置該參數(shù),指定Hologres源表的字段和Hologres外部表字段的映射關(guān)系。如果不配置該參數(shù),按照源表字段順序映射至Hologres外部表。如果Hologres里的字段名稱是大寫的話,需要為Hologres字段名稱添加雙引號("")。格式為:
MaxCompute字段1 : "Hologres字段1" [,MaxCompute字段2 : "Hologres字段2" ,...]
。
創(chuàng)建Hologres外部表(STS模式)
通過STS模式創(chuàng)建Hologres外部表的步驟如下:
創(chuàng)建RAM角色
創(chuàng)建RAM角色獲取ARN信息,用于創(chuàng)建外部表時(shí)填寫STS認(rèn)證信息。
登錄RAM訪問控制創(chuàng)建RAM角色。
創(chuàng)建RAM角色的可信實(shí)體類型根據(jù)實(shí)際需求選擇阿里云賬號或者身份提供商。
阿里云賬號:
阿里云賬號下的RAM用戶可以通過扮演RAM角色來訪問云資源,詳情請參見創(chuàng)建可信實(shí)體為阿里云賬號的RAM角色。
身份提供商:
通過設(shè)置SSO實(shí)現(xiàn)從企業(yè)本地賬號系統(tǒng)登錄至阿里云控制臺,幫您解決企業(yè)的統(tǒng)一用戶登錄認(rèn)證要求。詳情請參見創(chuàng)建可信實(shí)體為身份提供商的RAM角色。
修改信任策略配置內(nèi)容。
在角色頁面,單擊已創(chuàng)建完成的RAM角色名稱。
單擊信任策略頁簽。
在信任策略頁簽,單擊編輯信任策略。
參照如下內(nèi)容修改信任策略配置。
修改信任策略配置內(nèi)容與選擇的可信實(shí)體類型相關(guān)。
可信實(shí)體類型為阿里云賬號:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<UID>:root" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<UID>@odps.aliyuncs.com" ] } } ], "Version": "1" }
可信實(shí)體類型為身份提供商:
{ "Statement": [ { "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "saml:recipient": "https://signin.aliyun.com/saml-role/sso" } }, "Effect": "Allow", "Principal": { "Federated": [ "acs:ram::<UID>:saml-provider/IDP" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<UID>@odps.aliyuncs.com" ] } } ], "Version": "1" }
說明<UID>即阿里云賬號ID,可在用戶信息頁面獲取。
單擊確定。
添加RAM角色至Hologres實(shí)例并授權(quán)
RAM角色需要有Hologres實(shí)例的開發(fā)權(quán)限,才能在權(quán)限范圍內(nèi)使用Hologres。由于RAM角色默認(rèn)沒有Hologres管理控制臺的查看和操作實(shí)例的權(quán)限,因此需要阿里云賬號完成RAM相關(guān)權(quán)限授予才能進(jìn)行后續(xù)操作。添加RAM角色至Hologres實(shí)例,您可以通過如下方式進(jìn)行授權(quán)。
通過Hologres管理控制臺授權(quán)。
在左側(cè)導(dǎo)航欄單擊實(shí)例列表,單擊需要授權(quán)的Hologres實(shí)例名稱。
在實(shí)例詳情頁面,單擊賬號管理。
在用戶管理頁面單擊新增用戶添加RAM角色至Hologres實(shí)例。
在DB授權(quán)頁簽,為該RAM角色授予實(shí)例的開發(fā)權(quán)限。
通過SQL方式授權(quán)。
您可以通過SQL方式進(jìn)行授權(quán),授權(quán)SQL請參見Hologres權(quán)限模型概述。
若是通過RAM用戶扮演RAM角色,RAM用戶默認(rèn)沒有Hologres管理控制臺的權(quán)限,需要阿里云賬號給RAM用戶在訪問控制頁面授予AliyunRAMReadOnlyAccess權(quán)限,否則RAM用戶無法在Hologres管理控制臺進(jìn)行任何操作。詳情請參見文檔授予RAM用戶權(quán)限。
創(chuàng)建Hologres外部表
完成上述步驟后,基于已準(zhǔn)備好的數(shù)據(jù)信息,您即可登錄MaxCompute客戶端,結(jié)合創(chuàng)建Hologres外部表語法創(chuàng)建Hologres外部表。
安裝并登錄MaxCompute本地客戶端,進(jìn)入目標(biāo)MaxCompute項(xiàng)目。
進(jìn)入目標(biāo)項(xiàng)目命令信息,請參見項(xiàng)目空間操作。
執(zhí)行如下命令創(chuàng)建Hologres外部表。
命令示例如下。
create external table if not exists my_table_holo_jdbc ( id bigint, name string ) stored by 'com.aliyun.odps.jdbc.JdbcStorageHandler' with serdeproperties ( 'odps.properties.rolearn'='acs:ram::139699392458****:role/aliyunodpsholorole') location 'jdbc:postgresql://hgprecn-cn-oew210ut****-cn-hangzhou-internal.hologres.aliyuncs.com:80/mc_test?ApplicationName=MaxCompute¤tSchema=public&useSSL=false&table=holo/' tblproperties ( 'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver', 'odps.federation.jdbc.target.db.type'='holo', 'odps.federation.jdbc.colmapping'='id:id,name:name' );
執(zhí)行如下命令基于新建的Hologres外部表查詢Hologres源表信息。
命令示例如下。
--訪問Hologres外部表需要添加如下屬性。 set odps.sql.split.hive.bridge=true; set odps.sql.hive.compatible=true; --查詢Hologres外部表數(shù)據(jù)。 select * from my_table_holo_jdbc limit 10;
返回結(jié)果如下。
+------------+------------+ | id | name | +------------+------------+ | 1 | kate | | 2 | mary | | 3 | bob | | 4 | tom | | 5 | lulu | | 6 | mark | | 7 | haward | | 8 | lilei | | 9 | hanmeimei | | 10 | lily | +------------+------------+
可選:基于Hologres外部表與Hologres進(jìn)行數(shù)據(jù)交換、聯(lián)合分析。
例如,將MaxCompute加工后的數(shù)據(jù)利用Hologres外部表,寫入Hologres實(shí)現(xiàn)加速分析、在線服務(wù)。命令示例如下。
--訪問Hologres外部表需要添加如下屬性。 set odps.sql.split.hive.bridge=true; set odps.sql.hive.compatible=true; --向Hologres外部表插入數(shù)據(jù)。 insert into my_table_holo_jdbc values (12,'alice'); --查詢Hologres外部表數(shù)據(jù)。 select * from my_table_holo_jdbc;
返回結(jié)果如下。
+------------+------------+ | id | name | +------------+------------+ | 12 | alice | | 1 | kate | | 2 | mary | | 3 | bob | | 4 | tom | | 5 | lulu | | 6 | mark | | 7 | haward | | 8 | lilei | | 9 | hanmeimei | | 10 | lily | | 11 | lucy | +------------+------------+
頻繁更新的維度表保存在Hologres,滿足實(shí)時(shí)動態(tài)更新需要。MaxCompute通過外部表方式訪問維度表與MaxCompute中事實(shí)表進(jìn)行關(guān)聯(lián)分析,命令示例如下。
--訪問Hologres外部表需要添加如下屬性。 set odps.sql.split.hive.bridge=true; set odps.sql.hive.compatible=true; --創(chuàng)建MaxCompute內(nèi)部表。 create table holo_test as select * from my_table_holo_jdbc; --MaxCompute內(nèi)部表與Hologres外部表進(jìn)行關(guān)聯(lián)分析。 select * from my_table_holo_jdbc t1 inner join holo_test t2 on t1.id=t2.id;
返回結(jié)果如下。
+------------+------------+------------+------------+ | id | name | id2 | name2 | +------------+------------+------------+------------+ | 1 | kate | 1 | kate | | 2 | mary | 2 | mary | | 3 | bob | 3 | bob | | 4 | tom | 4 | tom | | 5 | lulu | 5 | lulu | | 6 | mark | 6 | mark | | 7 | harward | 7 | harward | | 8 | lilei | 8 | lilei | | 9 | hanmeimei | 9 | hanmeimei | | 10 | lily | 10 | lily | | 11 | lucy | 11 | lucy | | 12 | alice | 12 | alice | +------------+------------+------------+------------+
創(chuàng)建Hologres外部表(雙簽名模式)
雙簽名是MaxCompute和Hologres共同研發(fā)的認(rèn)證及鑒權(quán)協(xié)議,在MaxCompute側(cè)使用賬號登錄信息加簽名后,把認(rèn)證數(shù)據(jù)傳遞給Hologres側(cè),Hologres根據(jù)MaxCompute底層達(dá)成的協(xié)議,進(jìn)行同名認(rèn)證及鑒權(quán)。這樣只需要在MaxCompute和Hologres有相同的賬號,就可以直接進(jìn)行外部表訪問,不需要額外設(shè)置認(rèn)證信息。
前提條件。
Hologres中存在跟MaxCompute相同名稱的賬號,并且該賬號具有Hologres中對應(yīng)表的讀寫權(quán)限。
使用限制。
僅Hologres V1.3及以上版本支持MaxCompute使用雙簽名模式創(chuàng)建Hologres外部表,目前雙簽名模式只支持從Hologres外部表中讀取數(shù)據(jù),不支持寫入數(shù)據(jù)至Hologres外部表。
命令示例。
您可直接登錄MaxCompute客戶端,結(jié)合創(chuàng)建Hologres外部表語法通過雙簽名模式創(chuàng)建Hologres外部表。
--創(chuàng)建外部表 CREATE EXTERNAL TABLE IF NOT EXISTS holo_mc_external_dbl ( id int, name string, ds string ) STORED BY 'com.aliyun.odps.jdbc.JdbcStorageHandler' location 'jdbc:postgresql://hgprecn-cn-zvp2o6aq****-cn-beijing-internal.hologres.aliyuncs.com:80/mc_test?ApplicationName=MaxCompute¤tSchema=public&preferQueryMode=simple&useSSL=false&table=mf_holo_mc_up/' TBLPROPERTIES ( 'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver', 'odps.federation.jdbc.target.db.type'='holo', 'odps.federation.jdbc.colmapping'='id:id,name:name,ds:ds' ); --查詢外部表(必須與打開雙簽名開關(guān)命令一起執(zhí)行) set odps.sql.common.table.planner.ext.hive.bridge=true; select * from holo_mc_external_dbl;
開啟Hologres外部表存儲直讀功能
背景介紹
MaxCompute對Hologres外部表的讀是通過走JDBC模式,目前版本支持MaxCompute直讀Hologres存儲層,能夠帶來以下優(yōu)勢:
可以大幅降低讀表的延遲,大幅度提高查詢數(shù)據(jù)的速度。
可以大幅度減少Hologres FE的連接數(shù),大多數(shù)Query僅需要一個(gè)連接數(shù)即可。
使用限制
當(dāng)開啟Hologres直讀模式時(shí),使用限制如下,在條件不滿足時(shí)會回退到JDBC模式。
依賴Hologres實(shí)例版本 : V1.3.34及以上版本。
Hologres版本低于V1.3.34不支持直讀功能。
由于網(wǎng)絡(luò)連通性,只支持同Region的MaxCompute訪問Hologres實(shí)例。
目前不支持跨Region訪問,跨Region訪問會報(bào)錯(cuò):
FAILED: ODPS-0010000:System internal error - fuxi job failed, caused by: Pangu request failed with error code 3
。不支持直讀Hologres冷存表。
目前直讀功能不支持Hologres行存表。
當(dāng)Hologres配置為主從架構(gòu),僅支持配置連接URL為主實(shí)例,不支持配置為從實(shí)例。
直讀功能會對MaxCompute與Hologres之間的列進(jìn)行類型校驗(yàn),當(dāng)出現(xiàn)不匹配的類型時(shí)會自動回退為JDBC模式執(zhí)行。MaxCompute創(chuàng)建Hologres外部表時(shí),數(shù)據(jù)類型的限制如下:
JDBC模式與MaxCompute直讀模式都不支持的數(shù)據(jù)類型:
不支持Array、Map、Struct復(fù)雜數(shù)據(jù)類型。
不支持JSON、MONEY等數(shù)據(jù)類型。
JDBC模式支持,而MaxCompute直讀模式不支持的數(shù)據(jù)類型:
BINARY類型。
MaxCompute直讀模式支持,而JDBC模式不支持的數(shù)據(jù)類型:
JSONB數(shù)據(jù)類型
MaxCompute直讀模式使用Timestamp類型映射Hologres中的Timestamp With Time Zone類型會存在細(xì)微的時(shí)間誤差,具體差異如下:
Hologres中Timestamp With Time Zone類型列的時(shí)間在
1900-12-31 15:54:15
之前,MaxCompute查詢出來的時(shí)間會多5分44秒。Hologres中Timestamp With Time Zone類型列的時(shí)間在
1900-12-31 15:54:16
和1969-12-31 23:59:58
之間,MaxCompute查詢出來的時(shí)間會多1秒。Hologres中Timestamp With Time Zone類型列的時(shí)間在
1969-12-31 23:59:59
之后,MaxCompute查詢出來的時(shí)間與Hologres中的無區(qū)別。說明MaxCompute直讀模式使用Timestamp類型映射Hologres中的Timestamp With Time Zone類型不僅會存在細(xì)微的時(shí)間誤差,還會存在時(shí)區(qū)偏移,例如:
以MaxCompute的時(shí)區(qū)為東八區(qū)為例,Hologres中Timestamp With Time Zone類型列的時(shí)間為
2000-01-01 00:00:00
,MaxCompute查詢出來的時(shí)間為2000-01-01 08:00:00
。以MaxCompute的時(shí)區(qū)為東八區(qū)為例,Hologres中Timestamp With Time Zone類型列的時(shí)間為
1969-01-01 00:00:00
,MaxCompute查詢出來的時(shí)間為1969-01-01 08:00:01
。
其他數(shù)據(jù)類型映射如下:
Hologres數(shù)據(jù)類型
MaxCompute數(shù)據(jù)類型
說明
TEXT
STRING
VARCHAR
不涉及
SMALLINT
SMALLINT
不涉及
INT
INT4
INTEGER
INT
不涉及
INT8
BIGINT
BIGINT
不涉及
FLOAT4
REAL
FLOAT
不涉及
FLOAT
FLOAT8
DOUBLE
不涉及
BOOL
BOOLEAN
BOOLEAN
不涉及
TIMESTAMP
TIMESTAMP
存儲精度為微秒,存在時(shí)區(qū)的時(shí)間誤差。
TIMESTAMP WITH TIME ZONE
TIMESTAMP
MaxCompute與Hologres在底層已經(jīng)進(jìn)行了精度轉(zhuǎn)換。MaxCompute輸出不包含時(shí)區(qū)格式。
NUMERIC
DECIMAL
MaxCompute的DECIMAL如果未指定精度,則默認(rèn)為
(38,18)
,使用IMPORT FOREIGN SCHEMA
語句創(chuàng)建表時(shí)系統(tǒng)會自動轉(zhuǎn)換精度。CHAR(n)
CHAR(n)
MaxCompute的
CHAR(n)
為固定長度字符類型,n
為長度。最大取值為255。長度不足則使用空格填充。VARCHAR(n)
VARCHAR(n)
MaxCompute的
VARCHAR(n)
為可變長度字符類型,n
為長度。取值范圍為1~65535。DATE
DATE
不涉及
Foreign Server模式存在的額外限制:MaxCompute Project需要開啟三層模型。
開啟方式
在MaxCompute中查詢Hologres外部表時(shí)SQL前加上如下參數(shù)。
set odps.table.api.enable.holo.table=true;
直讀驗(yàn)證
可以在Logview里查看日志,判斷查詢是否走了直讀模式,Logview使用詳情請參見使用Logview 2.0查看作業(yè)運(yùn)行信息。
在Logview的Summary頁簽下,查找external holo tables
字段查看屬性,屬性格式如下:
<project_name>.<table_name>:<訪問方式>[<(回退原因)>]
參數(shù)說明:
參數(shù) | 說明 |
project_name | 項(xiàng)目名稱。 |
table_name | 表名稱。 |
訪問方式 | 外部表的訪問方式,取值如下:
|
回退原因 | 如果訪問方式為
|