日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

文檔

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ù)如下:表數(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í)例配置獲取endpoint和端口

    • 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外部表的步驟如下:

  1. 創(chuàng)建RAM角色

    創(chuàng)建RAM角色獲取ARN信息,用于創(chuàng)建外部表時(shí)填寫STS認(rèn)證信息。

    1. 登錄RAM訪問控制創(chuàng)建RAM角色。

      創(chuàng)建RAM角色創(chuàng)建RAM角色的可信實(shí)體類型根據(jù)實(shí)際需求選擇阿里云賬號或者身份提供商。

    2. 修改信任策略配置內(nèi)容。

      1. 角色頁面,單擊已創(chuàng)建完成的RAM角色名稱。

      2. 單擊信任策略頁簽。

      3. 信任策略頁簽,單擊編輯信任策略

      4. 參照如下內(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,可在用戶信息頁面獲取。

      5. 單擊確定

  2. 添加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)。

      1. 登錄Hologres管理控制臺

      2. 在左側(cè)導(dǎo)航欄單擊實(shí)例列表,單擊需要授權(quán)的Hologres實(shí)例名稱。

      3. 在實(shí)例詳情頁面,單擊賬號管理

      4. 用戶管理頁面單擊新增用戶添加RAM角色至Hologres實(shí)例。新增用戶

      5. DB授權(quán)頁簽,為該RAM角色授予實(shí)例的開發(fā)權(quán)限。DB授權(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)限添加權(quán)限

  3. 創(chuàng)建Hologres外部表

    完成上述步驟后,基于已準(zhǔn)備好的數(shù)據(jù)信息,您即可登錄MaxCompute客戶端,結(jié)合創(chuàng)建Hologres外部表語法創(chuàng)建Hologres外部表。

    1. 安裝并登錄MaxCompute本地客戶端,進(jìn)入目標(biāo)MaxCompute項(xiàng)目。

      進(jìn)入目標(biāo)項(xiàng)目命令信息,請參見項(xiàng)目空間操作

    2. 執(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&currentSchema=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'
      );
    3. 執(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       |
      +------------+------------+
    4. 可選:基于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&currentSchema=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:161969-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

表名稱。

訪問方式

外部表的訪問方式,取值如下:

  • Optimized:代表走的是直讀模式,Logview示例如下。直讀模式

  • Fallback:代表回退到了JDBC模式,Logview示例如下。回退為JDBC模式

回退原因

如果訪問方式Fallback,顯示回退為JDBC模式的原因,取值及解決方案如下。

  • Column type map error Column name ${ColumnName}:MaxCompute表與Hologres表對應(yīng)的列類型不匹配或者不兼容導(dǎo)致,需要參照數(shù)據(jù)類型映射更改外部表的數(shù)據(jù)類型后就可以走直讀模式。

  • Holo connection error: Hologres實(shí)例連接異常,有可能是權(quán)限信息有誤或者Hologres實(shí)例狀態(tài)有誤,請檢查當(dāng)前用戶是否有權(quán)限訪問對應(yīng)的Hologres數(shù)據(jù)庫或者查看Hologres實(shí)例目前是否處于可服務(wù)狀態(tài)。

  • Odps table is partition table:MaxCompute外部表為分區(qū)表導(dǎo)致,目前暫不支持。

  • Select hg_version errorHologres version check errorFetch hg_version data error:Hologres實(shí)例版本有誤導(dǎo)致的,需要升級Hologres實(shí)例版本到V1.3.34或以上版本,升級實(shí)例版本詳情請參見實(shí)例升級