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

使用OSS Foreign Table進(jìn)行數(shù)據(jù)湖分析

本文介紹如何使用OSS Foreign Table(OSS外表,簡稱OSS FDW)導(dǎo)入OSS中的數(shù)據(jù)并進(jìn)行數(shù)據(jù)分析。

功能介紹

OSS FDW基于PG FDW(PostgreSQL Foreign Data Wrapper)框架進(jìn)行開發(fā),通過OSS FDW,您可以進(jìn)行如下操作:

  • 將OSS數(shù)據(jù)導(dǎo)入本地表(行存表或列存表)進(jìn)行分析加速。

  • 直接查詢分析OSS的海量數(shù)據(jù)。

  • OSS外表與本地表關(guān)聯(lián)分析。

OSS FDW支持多種格式的數(shù)據(jù)文件,適用不同的業(yè)務(wù)場景,具體文件格式如下:

  • 支持訪問CSV、TEXT、JSON、JSONLINE格式的非壓縮文本文件。

  • 支持訪問CSV、TEXT格式的GZIP壓縮、標(biāo)準(zhǔn)SNAPPY壓縮文本文件。

  • 支持訪問JSON、JSONLINE格式的GZIP壓縮文本文件。

  • 支持訪問ORC格式的二進(jìn)制文件。ORC數(shù)據(jù)類型與AnalyticDB PostgreSQL版數(shù)據(jù)類型的映射關(guān)系,請參見ORC文件數(shù)據(jù)類型對照表

  • 支持訪問PARQUET格式的二進(jìn)制文件。PARQUET數(shù)據(jù)類型與AnalyticDB PostgreSQL版數(shù)據(jù)類型的映射關(guān)系,請參見Parquet文件數(shù)據(jù)類型對照表

  • 支持訪問AVRO格式的二進(jìn)制文件。AVRO數(shù)據(jù)類型與AnalyticDB PostgreSQL版數(shù)據(jù)類型的映射關(guān)系,請參見Avro文件數(shù)據(jù)類型對照表

準(zhǔn)備工作

準(zhǔn)備OSS數(shù)據(jù)

準(zhǔn)備示例文件example.csv

獲取OSS Bucket信息

以下內(nèi)容將指導(dǎo)您獲取Bucket名稱文件的路徑Endpoint(地域節(jié)點(diǎn))Bucket域名

  1. 登錄OSS管理控制臺

  2. 在左側(cè)導(dǎo)航欄中,單擊目標(biāo)Bucket列表

  3. Bucket列表,單擊目標(biāo)Bucket。

    您可以在Bucket列表頁面,您可以獲取Bucket名稱

  4. 文件管理頁面,您可以獲取的Bucket中文件的路徑。

  5. 單擊左側(cè)概覽

  6. 概覽頁面的訪問端口區(qū)域,您可以獲取Endpoint(地域節(jié)點(diǎn))Bucket域名

    建議使用ECS的VPC網(wǎng)絡(luò)訪問(內(nèi)網(wǎng))的訪問域名進(jìn)行訪問。

獲取AccessKey ID和AccessKey Secret

獲取AccessKey ID和AccessKey Secret的具體操作,請參見創(chuàng)建AccessKey

創(chuàng)建OSS Server

使用CREATE SERVER語句創(chuàng)建OSS Server,指定需要訪問的OSS服務(wù)端。更多關(guān)于CREATE SERVER的介紹,請參見CREATE SERVER

語法

CREATE SERVER server_name
    FOREIGN DATA WRAPPER fdw_name
    [ OPTIONS ( option 'value' [, ... ] ) ]

參數(shù)選項(xiàng)

參數(shù)

類型

是否必填

說明

server_name

字符串

OSS Server的名稱。

fdw_name

字符串

管理服務(wù)器的外部數(shù)據(jù)容器的名稱,固定為oss_fdw。

OPTIONS參數(shù)選項(xiàng)請參見下表:

參數(shù)

類型

是否必填

說明

endpoint

字符串

Bucket域名,獲取方法請參見準(zhǔn)備工作

bucket

字符串

數(shù)據(jù)文件所屬的Bucket的名稱,獲取方法請參見準(zhǔn)備工作

說明
  • OSS Server和OSS FDW中必須有一個(gè)設(shè)置了Bucket。關(guān)于OSS FDW的Bucket相關(guān)信息,請參見創(chuàng)建OSS FDW

  • 如果OSS Server和OSS FDW都設(shè)置了Bucket,則OSS FDW中的Bucket生效。

speed_limit

數(shù)值

觸發(fā)超時(shí)的數(shù)據(jù)量。單位為字節(jié),默認(rèn)值為1024字節(jié)。

需要與speed_time參數(shù)配合使用。

說明

默認(rèn)情況下,如果連續(xù)90秒傳輸?shù)臄?shù)據(jù)量少于1024字節(jié),則會(huì)觸發(fā)超時(shí)。具體信息,請參見OSS SDK 錯(cuò)誤處理

speed_time

數(shù)值

觸發(fā)超時(shí)的時(shí)間。單位為秒,默認(rèn)值為90秒。

需要與speed_limit參數(shù)配合使用。

說明

默認(rèn)情況下,如果連續(xù)90秒傳輸?shù)臄?shù)據(jù)量少于1024字節(jié),則會(huì)觸發(fā)超時(shí)。具體信息,請參見OSS SDK 錯(cuò)誤處理

connect_timeout

數(shù)值

連接超時(shí)時(shí)間。單位為秒,默認(rèn)值為10秒。

dns_cache_timeout

數(shù)值

DNS超時(shí)時(shí)間。單位為秒,默認(rèn)值為60秒。

示例

CREATE SERVER oss_serv
    FOREIGN DATA WRAPPER oss_fdw
    OPTIONS (
        endpoint 'oss-cn-********.aliyuncs.com',
        bucket 'adb-pg'
  );

您也可以通過ALTER SERVER語句修改OSS Server的配置,使用方法,請參見ALTER SERVER

修改OSS Server配置示例如下:

  • 修改OSS Server中的某個(gè)參數(shù):

    ALTER SERVER oss_serv OPTIONS(SET endpoint 'oss-cn-********.aliyuncs.com');
  • 添加OSS Server中的某個(gè)參數(shù):

    ALTER SERVER oss_serv OPTIONS(ADD connect_timeout '20');
  • 刪除OSS Server中的某個(gè)參數(shù):

    ALTER SERVER oss_serv OPTIONS(DROP connect_timeout);

您也可以通過DROP SERVER語句刪除該OSS Server,使用方法,請參見DROP SERVER

創(chuàng)建OSS User Mapping

創(chuàng)建OSS Server后,您還需要?jiǎng)?chuàng)建一個(gè)訪問OSS Server的用戶。您可以使用CREATE USER MAPPING語句創(chuàng)建OSS User Mapping,用于定義AnalyticDB PostgreSQL版數(shù)據(jù)庫用戶與訪問OSS Server用戶的映射關(guān)系。更多介紹,請參見CREATE USER MAPPING

語法

CREATE USER MAPPING FOR { username | USER | CURRENT_USER | PUBLIC }
    SERVER servername
    [ OPTIONS ( option 'value' [, ... ] ) ]

參數(shù)選項(xiàng)

參數(shù)

類型

是否必填

說明

username

字符串

是,四選一

指定映射的AnalyticDB PostgreSQL版實(shí)例的用戶名。

USER

字符串

映射當(dāng)前的AnalyticDB PostgreSQL版實(shí)例的用戶名。

CURRENT_USER

字符串

PUBLIC

字符串

匹配所有AnalyticDB PostgreSQL版實(shí)例的用戶名,包括以后創(chuàng)建的用戶。

servername

字符串

OSS Server的名稱。

OPTIONS參數(shù)選項(xiàng)請參見下表:

參數(shù)

類型

是否必填

說明

id

字符串

AccessKey ID,獲取方法,請參見創(chuàng)建AccessKey

key

字符串

AccessKey Secret,獲取方法,請參見創(chuàng)建AccessKey

示例

CREATE USER MAPPING FOR PUBLIC
    SERVER oss_serv
    OPTIONS (
        id 'LTAI5t7Ge***************',
        key 'FikziJd2La*******************'
    );

您也可以通過DROP USER MAPPING語句刪除該用戶,使用方法,請參見DROP USER MAPPING

創(chuàng)建OSS FDW

擁有OSS Server和訪問OSS Server的用戶后,您可以開始創(chuàng)建OSS FDW。您可以使用CREATE FOREIGN TABLE語句創(chuàng)建OSS FDW,更多信息,請參見CREATE FOREIGN TABLE

語法

CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
    column_name data_type [ OPTIONS ( option 'value' [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ]
      [, ... ]
] )
    SERVER server_name
  [ OPTIONS ( option 'value' [, ... ] ) ]

參數(shù)選項(xiàng)

參數(shù)

類型

是否必填

說明

table_name

字符串

OSS FDW名稱。

column_name

字符串

列名。

data_type

字符串

該列的數(shù)據(jù)類型。

OPTIONS參數(shù)選項(xiàng)請參見下表:

參數(shù)

類型

是否必填

說明

filepath

字符串

是,三選一

OSS中包含路徑的文件名稱。

如果使用filepath參數(shù),則僅選擇指定文件。

prefix

字符串

指定數(shù)據(jù)文件對應(yīng)路徑名的前綴,不支持正則表達(dá)式,僅是匹配前綴。

如果使用prefix參數(shù),則會(huì)選擇含有這一前綴的所有OSS文件,例如:

  • 如果指定prefix=test/filename,以下文件都會(huì)被導(dǎo)入:

    • test/filename

    • test/filenamexxx

    • test/filename/aa

    • test/filenameyyy/aa

    • test/filenameyyy/bb/aa

  • 如果指定prefix=test/filename/,只有以下文件會(huì)被導(dǎo)入(上面列的其他文件不會(huì)被導(dǎo)入):

    • test/filename/aa

dir

字符串

OSS中的目錄路徑。目錄路徑需要以/結(jié)尾,例如test/mydir/

如果使用dir參數(shù),會(huì)選擇虛擬目錄下的所有文件,但不包括它的子目錄和子目錄下的文件。

bucket

字符串

數(shù)據(jù)文件所屬的Bucket的名稱,獲取方法請參見準(zhǔn)備工作

說明
  • OSS Server和OSS FDW中必須有一個(gè)設(shè)置了Bucket。

  • 如果OSS Server和OSS FDW都設(shè)置了Bucket,則OSS FDW中的Bucket生效。

format

字符串

文件格式,取值范圍如下:

  • csv

  • text

  • orc

  • avro

  • parquet

  • json

    關(guān)于JSON的使用規(guī)范,請參見JSON規(guī)范

  • jsonline

    以換行符分隔的JSON,所有能被JSONLINE讀取的數(shù)據(jù)一定可以用JSON讀取,反之則不一定。在可行的情況下,推薦使用JSONLINE。更多JSONLINE規(guī)范,請參見JSONLINE規(guī)范

filetype

字符串

文件類型,取值范圍如下:

  • plain(默認(rèn)):按字節(jié)二進(jìn)制讀取,不做額外處理。

  • gzip:讀取原始二進(jìn)制數(shù)據(jù)并使用GZIP解壓縮。

  • snappy:讀取原始二進(jìn)制數(shù)據(jù)并使用SNAPPY解壓縮。

    僅支持標(biāo)準(zhǔn)格式的SNAPPY壓縮,暫不支持HADOOP-SNAPPY壓縮文件。

說明
  • filetype參數(shù)僅支持CSV、TEXT、JSON和JSONLINE格式的文件。

  • 其中snappy選項(xiàng)不支持JSON和JSONLINE格式的文件。

log_errors

布爾型

是否將錯(cuò)誤記錄到日志文件。默認(rèn)值為false。更多信息,請參見容錯(cuò)機(jī)制

說明

該參數(shù)僅適用于CSV和TEXT格式的文件。

segment_reject_limit

數(shù)值

異常中止任務(wù)(error abort)的數(shù)量。

包含%時(shí)表示錯(cuò)誤行百分比,不包含%時(shí)表示錯(cuò)誤行數(shù)。例如:

  • segment_reject_limit = '10':表示錯(cuò)誤的行數(shù)超過10行時(shí),任務(wù)停止并報(bào)錯(cuò)退出。

  • segment_reject_limit = '10%':表示錯(cuò)誤的行數(shù)超過已處理行數(shù)的10%時(shí),任務(wù)停止并報(bào)錯(cuò)退出。

說明

該參數(shù)僅適用于CSV和TEXT格式的文件。

header

布爾型

源文件中字段名是否包含header行,取值如下:

  • true:包含header行。

  • false(默認(rèn)):不包含header行。

說明

該參數(shù)僅適用于CSV格式的文件。

delimiter

字符串

字段分隔符,僅允許設(shè)置為單字節(jié)字符。

  • CSV文件:默認(rèn)為逗號(,)。

  • TEXT文件:默認(rèn)為tab鍵。

說明

該參數(shù)僅適用于CSV和TEXT格式的文件。

quote

字符串

字段引號,僅允許設(shè)置為單字節(jié)字符。默認(rèn)為雙引號(")。

說明

該參數(shù)僅適用于CSV格式的文件。

escape

字符串

聲明匹配quote參數(shù)的字符串,只允許為單字節(jié)的字符。默認(rèn)為雙引號(")。

說明

該參數(shù)僅適用于CSV格式的文件。

null

字符串

指定文件中的NULL字符串。

  • CSV格式:默認(rèn)為\N(backslash)。

  • TEXT格式:默認(rèn)為未被引號引用的空白字符。

說明

該參數(shù)僅適用于CSV和TEXT格式的文件。

encoding

字符串

指定數(shù)據(jù)文件編碼。默認(rèn)情況下為客戶端編碼。

說明

該參數(shù)僅適用于CSV和TEXT格式的文件。

force_not_null

布爾型

是否聲明字段的值不匹配空字符串,取值如下:

  • true:表示字段的值不匹配空字符串。

  • false(默認(rèn)):表示字段的值匹配空字符串。

說明

該參數(shù)僅適用于CSV和TEXT格式的文件。

force_null

布爾型

空字符串處理方法,取值如下:

  • true:空字符串的字段的值無論是否添加了引號均作為NULL返回。

  • false(默認(rèn)):空字符串的字段的值只有未加引號的情況下作為NULL返回。

說明

該參數(shù)僅適用于CSV和TEXT格式的文件。

示例

CREATE FOREIGN TABLE ossexample (
    date text,
    time text,
    open float,
    high float,
    low float,
    volume int
) SERVER oss_serv OPTIONS (dir 'dir_oss_adb/', format 'csv');
說明

創(chuàng)建OSS FDW完成后,您可以通過如下方式查看OSS FDW匹配的OSS文件列表是否符合預(yù)期:

  • 方法一:

    EXPLAIN VERBOSE SELECT * FROM <OSS FDW表名>;
  • 方法二:

    SELECT * FROM get_oss_table_meta('<OSS FDW表名>');

您也可以通過DROP FOREIGN TABLE語句刪除該OSS FDW,使用方法,請參見DROP FOREIGN TABLE

查詢分析OSS數(shù)據(jù)

查詢OSS FDW外表的數(shù)據(jù)與查詢本地表數(shù)據(jù)方法一樣,常見查詢?nèi)缦拢?/p>

  • 鍵值過濾查詢,示例如下:

    SELECT * FROM ossexample WHERE volume = 5;
  • 聚合查詢,示例如下:

    SELECT count(*) FROM ossexample WHERE volume = 5;
  • 過濾、分組和LIMIT查詢,示例如下:

    SELECT low, sum(volume)
      FROM ossexample
     GROUP BY low
     ORDER BY low
     limit 5;

OSS FDW外表與本地表關(guān)聯(lián)分析

  1. 新建用于關(guān)聯(lián)分析的本地表example,并插入測試數(shù)據(jù),示例如下:

    CREATE TABLE example (id int, volume int);
    INSERT INTO example VALUES(1,1), (2,3), (4,5);
  2. 本地表example和OSS FDW外表ossexample執(zhí)行關(guān)聯(lián)查詢,示例如下:

    SELECT example.volume, min(high), max(low)
    FROM
    ossexample,
    example
    WHERE ossexample.volume = example.volume
    GROUP BY(example.volume)
    ORDER BY example.volume;

容錯(cuò)機(jī)制

OSS FDW通過log_errorssegment_reject_limit參數(shù)提供容錯(cuò)功能,原始數(shù)據(jù)中的錯(cuò)誤數(shù)據(jù)不會(huì)導(dǎo)致OSS外表掃描停止。

關(guān)于log_errorssegment_reject_limit參數(shù)的信息,請參見創(chuàng)建OSS FDW

  • 創(chuàng)建支持容錯(cuò)的OSS FDW外表,示例如下:

    CREATE FOREIGN TABLE oss_error_sales (id int, value float8, x text)
        SERVER oss_serv
        OPTIONS (log_errors 'true',         -- 記錄錯(cuò)誤行信息
                 segment_reject_limit '10', -- 錯(cuò)誤行數(shù)不得超過10行,否則會(huì)停止掃描。
                 dir 'error_sales/',        -- 指定外表匹配的OSS文件目錄
                 format 'csv',              -- 指定按csv格式解析文件
                 encoding 'utf8');          -- 指定文件編碼 
  • 查看錯(cuò)誤行的日志,查看方式如下:

    SELECT * FROM gp_read_error_log('oss_error_sales');
  • 刪除錯(cuò)誤行的日志,刪除方式如下:

    SELECT gp_truncate_error_log('oss_error_sales');

常見問題

Q:刪除OSS FDW上的數(shù)據(jù)時(shí),能否同時(shí)刪除OSS上的數(shù)據(jù)。

A:刪除OSS FDW上的數(shù)據(jù)時(shí),無法刪除OSS上的數(shù)據(jù)。

相關(guān)文檔