AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Oracle 數(shù)據(jù)量 150T,PostgreSQL 能搞定嗎?

來源: 責編: 時間:2024-05-16 17:45:15 170觀看
導讀此版本的 parquet_s3_fdw 適用于 PostgreSQL 13、14、15 和 16。只讀模式下的 Apache Parquet 外部數(shù)據(jù)包裝器,支持 PostgreSQL 訪問 S3 存儲。用法加載擴展CREATE EXTENSION parquet_s3_fdw;創(chuàng)建服務器CREATE SERVER

此版本的 parquet_s3_fdw 適用于 PostgreSQL 13、14、15 和 16。nKn28資訊網(wǎng)——每日最新資訊28at.com

只讀模式下的 Apache Parquet 外部數(shù)據(jù)包裝器,支持 PostgreSQL 訪問 S3 存儲。nKn28資訊網(wǎng)——每日最新資訊28at.com

用法

加載擴展

CREATE EXTENSION parquet_s3_fdw;

創(chuàng)建服務器

CREATE SERVER parquet_s3_srv FOREIGN DATA WRAPPER parquet_s3_fdw;

如果要使用 MinIO 而不是 AWS S3,請使用 use_minio 選項創(chuàng)建服務器。nKn28資訊網(wǎng)——每日最新資訊28at.com

CREATE SERVER parquet_s3_srv FOREIGN DATA WRAPPER parquet_s3_fdw OPTIONS (use_minio 'true');

創(chuàng)建用戶映射

如果要訪問 Amazon S3,則必須指定用戶名和密碼。nKn28資訊網(wǎng)——每日最新資訊28at.com

CREATE USER MAPPING FOR public SERVER parquet_s3_srv OPTIONS (user 's3user', password 's3password');

創(chuàng)建外表

現(xiàn)在你應該能夠從 Parquet 文件創(chuàng)建外表了。目前parquet_s3_fdw支持下面這些數(shù)據(jù)列類型(還將會增加):nKn28資訊網(wǎng)——每日最新資訊28at.com

Arrow 類型
nKn28資訊網(wǎng)——每日最新資訊28at.com

SQL 類型
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT8
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT2
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT16
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT2
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT32
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT4
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT64
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT8
nKn28資訊網(wǎng)——每日最新資訊28at.com

FLOAT
nKn28資訊網(wǎng)——每日最新資訊28at.com

FLOAT4
nKn28資訊網(wǎng)——每日最新資訊28at.com

DOUBLE
nKn28資訊網(wǎng)——每日最新資訊28at.com

FLOAT8
nKn28資訊網(wǎng)——每日最新資訊28at.com

TIMESTAMP
nKn28資訊網(wǎng)——每日最新資訊28at.com

TIMESTAMP
nKn28資訊網(wǎng)——每日最新資訊28at.com

DATE32
nKn28資訊網(wǎng)——每日最新資訊28at.com

DATE
nKn28資訊網(wǎng)——每日最新資訊28at.com

STRING
nKn28資訊網(wǎng)——每日最新資訊28at.com

TEXT
nKn28資訊網(wǎng)——每日最新資訊28at.com

BINARY
nKn28資訊網(wǎng)——每日最新資訊28at.com

BYTEA
nKn28資訊網(wǎng)——每日最新資訊28at.com

LIST
nKn28資訊網(wǎng)——每日最新資訊28at.com

ARRAY
nKn28資訊網(wǎng)——每日最新資訊28at.com

MAP
nKn28資訊網(wǎng)——每日最新資訊28at.com

JSONB
nKn28資訊網(wǎng)——每日最新資訊28at.com

目前parquet_s3_fdw不支持結構體和嵌套列表。nKn28資訊網(wǎng)——每日最新資訊28at.com

支持以下選項:nKn28資訊網(wǎng)——每日最新資訊28at.com

? filename - 要讀取的 Parquet 文件的路徑列表,以空格分隔。您可以用s3://開始來指定 AWS S3 上的路徑。不支持混合使用本地路徑和 S3 路徑;nKn28資訊網(wǎng)——每日最新資訊28at.com

? dirname - 具有要讀取的 Parquet 文件的目錄路徑;nKn28資訊網(wǎng)——每日最新資訊28at.com

? sorted - 用來預排序 Parquet 文件的,空格分隔的列列表;當使用ORDER BY子句運行查詢,或在其他情況下帶有預排序的列集會有用(Group Aggregate,Merge Join)時,這將有助于 postgres 避免冗余的排序;nKn28資訊網(wǎng)——每日最新資訊28at.com

? files_in_order - 要求以filename指定或由files_func返回的文件,根據(jù)sorted選項進行排序,并且在范圍上沒有交叉;這允許在并行多文件掃描節(jié)點上使用Gather Merge節(jié)點(默認值為false);nKn28資訊網(wǎng)——每日最新資訊28at.com

? use_mmap - 是否使用內存映射操作,而不是文件讀取操作(默認值為false);nKn28資訊網(wǎng)——每日最新資訊28at.com

? use_threads - 啟用 Apache Arrow 的并行列解碼/解壓(默認值為false);nKn28資訊網(wǎng)——每日最新資訊28at.com

? files_func - 用戶定義的函數(shù),由 parquet_s3_fdw 在每次查詢時用于檢索 parquet 文件列表;函數(shù)必須接受一個JSONB參數(shù),并返回 parquet 文件完整路徑的文本數(shù)組;nKn28資訊網(wǎng)——每日最新資訊28at.com

? files_func_arg - 由 files_func 指定的函數(shù)的參數(shù)。nKn28資訊網(wǎng)——每日最新資訊28at.com

? max_open_files - 同時打開的 Parquet 文件的數(shù)量限制。nKn28資訊網(wǎng)——每日最新資訊28at.com

? region - 用于連接到的 AWS 區(qū)域的值(默認值為ap-northeast-1)。nKn28資訊網(wǎng)——每日最新資訊28at.com

? endpoint - 用于連接的地址和端口(默認值為127.0.0.1:9000)。nKn28資訊網(wǎng)——每日最新資訊28at.com

可以為單個和一組 Parquet 文件創(chuàng)建外部表。也可以指定一個用戶定義的函數(shù),該函數(shù)會返回一個文件路徑列表。根據(jù)文件數(shù)量和表選項,parquet_s3_fdw可以使用以下的一種執(zhí)行策略:nKn28資訊網(wǎng)——每日最新資訊28at.com

策略
nKn28資訊網(wǎng)——每日最新資訊28at.com

描述
nKn28資訊網(wǎng)——每日最新資訊28at.com

Single FilenKn28資訊網(wǎng)——每日最新資訊28at.com

基本的單文件讀取器
nKn28資訊網(wǎng)——每日最新資訊28at.com

MultifilenKn28資訊網(wǎng)——每日最新資訊28at.com

按順序逐個處理 Parquet 文件的讀取器
nKn28資訊網(wǎng)——每日最新資訊28at.com

Multifile MergenKn28資訊網(wǎng)——每日最新資訊28at.com

該讀取器會合并預排序的 Parquet 文件,以便生成的結果也是有序的;在指定了sorted選項,并且查詢計劃需要排序(例如包含了ORDER BY子句)時會使用nKn28資訊網(wǎng)——每日最新資訊28at.com

Caching Multifile MergenKn28資訊網(wǎng)——每日最新資訊28at.com

Multifile Merge相同,但會限制同時打開的文件數(shù);當指定的 Parquet 文件數(shù)超過max_open_files時會使用nKn28資訊網(wǎng)——每日最新資訊28at.com

GUC 變量:nKn28資訊網(wǎng)——每日最新資訊28at.com

? parquet_fdw.use_threads - 允許用戶啟用或禁用線程的全局開關(默認值為true);nKn28資訊網(wǎng)——每日最新資訊28at.com

? parquet_fdw.enable_multifile - 啟用多文件讀取器(默認值為true)。nKn28資訊網(wǎng)——每日最新資訊28at.com

? parquet_fdw.enable_multifile_merge - 啟用多文件合并讀取器(默認值為true)。nKn28資訊網(wǎng)——每日最新資訊28at.com

示例:nKn28資訊網(wǎng)——每日最新資訊28at.com

CREATE FOREIGN TABLE userdata (    id           int,    first_name   text,    last_name    text)SERVER parquet_s3_srvOPTIONS (    filename 's3://bucket/dir/userdata1.parquet');

訪問外表

SELECT * FROM userdata;

并行查詢

parquet_s3_fdw還支持并行查詢執(zhí)行(注意不要與 Apache Arrow 的多線程解碼功能混淆)。nKn28資訊網(wǎng)——每日最新資訊28at.com

導入

parquet_s3_fdw還支持 IMPORT FOREIGN SCHEMA 命令,來發(fā)現(xiàn)文件系統(tǒng)上指定目錄中的 parquet 文件,并根據(jù)這些文件創(chuàng)建外部表。它可以像這樣使用:nKn28資訊網(wǎng)——每日最新資訊28at.com

IMPORT FOREIGN SCHEMA "/path/to/directory"FROM SERVER parquet_s3_srvINTO public;

重要的是,這里的remote_schema是一個本地文件系統(tǒng)的目錄路徑,并且用雙引號引起來。nKn28資訊網(wǎng)——每日最新資訊28at.com

將 parquet 文件導入到外部表的另一種方法是,使用import_parquet_s3或import_parquet_s3_explicit:nKn28資訊網(wǎng)——每日最新資訊28at.com

CREATE FUNCTION import_parquet_s3(    tablename   text,    schemaname  text,    servername  text,    userfunc    regproc,    args        jsonb,    options     jsonb)CREATE FUNCTION import_parquet_s3_explicit(    tablename   text,    schemaname  text,    servername  text,    attnames    text[],    atttypes    regtype[],    userfunc    regproc,    args        jsonb,    options     jsonb)

import_parquet_s3和import_parquet_s3_explicit之間的唯一區(qū)別是,后者允許指定一組要導入的屬性/列。attnames和atttypes分別是屬性名稱和屬性類型的數(shù)組(參見下面的示例)。nKn28資訊網(wǎng)——每日最新資訊28at.com

userfunc是一個用戶自定義函數(shù)。它必須接受一個jsonb參數(shù),并返回一個要導入的 parquet 文件的文件系統(tǒng)路徑的文本數(shù)組。args是用戶指定的 jsonb 對象,以作為參數(shù)傳遞給userfunc。這種函數(shù)的簡單實現(xiàn)和用法,可以如下面這樣:nKn28資訊網(wǎng)——每日最新資訊28at.com

CREATE FUNCTION list_parquet_s3_files(args jsonb)RETURNS text[] AS$$BEGIN    RETURN array_agg(args->>'dir' || '/' || filename)           FROM pg_ls_dir(args->>'dir') AS files(filename)           WHERE filename ~~ '%.parquet';END$$LANGUAGE plpgsql;SELECT import_parquet_s3_explicit(    'abc',    'public',    'parquet_srv',    array['one', 'three', 'six'],    array['int8', 'text', 'bool']::regtype[],    'list_parquet_files',    '{"dir": "/path/to/directory"}',    '{"sorted": "one"}');

特性

? 支持在本地文件系統(tǒng)或 Amazon S3 上對 parquet 文件進行 SELECT 操作。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 支持 INSERT、DELETE、UPDATE(外部修改)。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 支持 MinIO 訪問,以替代 Amazon S3。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 允許控制外部服務器在事務完成后是否保持連接打開狀態(tài)。這由 keep_connections 控制,默認為 on。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 支持 parquet_s3_fdw 的 parquet_s3_fdw_get_connections() 函數(shù),列出打開的外部服務器連接。nKn28資訊網(wǎng)——每日最新資訊28at.com

無結構模式

? 該功能將使用戶能夠使用無結構的能力:nKn28資訊網(wǎng)——每日最新資訊28at.com

 ?Jsonb 鍵:parquet 列名稱。nKn28資訊網(wǎng)——每日最新資訊28at.com

? Jsonb 值:parquet 列數(shù)據(jù)。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 每個 parquet 文件沒有特定的外部表結構(列定義)。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 無結構的外表只有一個 jsonb 列,用于根據(jù)以下規(guī)則表示 parquet 文件中的數(shù)據(jù):nKn28資訊網(wǎng)——每日最新資訊28at.com

使用無結構模式,會有幾個好處:nKn28資訊網(wǎng)——每日最新資訊28at.com

? parquet 文件數(shù)據(jù)結構的靈活性:通過將所有列數(shù)據(jù)合并到一個 jsonb 列中,無結構的外表可以查詢任何 parquet 文件,文件中的所有列都能映射到 postgres 類型。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 沒有預定義的外部表結構(列定義)。缺少結構意味著外部表會查詢 parquet 文件中的所有列,包括用戶還未使用的列。nKn28資訊網(wǎng)——每日最新資訊28at.com

無結構模式用法

? 無結構模式由schemaless選項來啟用:nKn28資訊網(wǎng)——每日最新資訊28at.com

? schemaless選項是true:啟用無結構模式。nKn28資訊網(wǎng)——每日最新資訊28at.com

? schemaless選項是false:禁用無結構模式(我們稱之為non-schemaless模式)。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 如果未配置schemaless選項,則默認值為 false。nKn28資訊網(wǎng)——每日最新資訊28at.com

? CREATE FOREIGN TABLE、IMPORT FOREIGN SCHEMA、import_parquet_s3()和import_parquet_s3_explicit()中均支持schemaless選項。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 無結構外表需要至少一個 jsonb 列來表示數(shù)據(jù):nKn28資訊網(wǎng)——每日最新資訊28at.com

CREATE FOREIGN TABLE example_schemaless (  id int,  v jsonb) OPTIONS (filename '/path/to/parquet_file', schemaless 'true');SELECT * FROM example_schemaless;id |                                                                v----+---------------------------------------------------------------------------------------------------------------------------------    | {"one": 1, "six": "t", "two": [1, 2, 3], "five": "2018-01-01", "four": "2018-01-01 00:00:00", "seven": 0.5, "three": "foo"}    | {"one": 2, "six": "f", "two": [null, 5, 6], "five": "2018-01-02", "four": "2018-01-02 00:00:00", "seven": null, "three": "bar"}(2 rows)

? 如果有 1 個以上的 jsonb 列,則僅填充一列,所有其他列都使用 NULL 值處理。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 如果沒有 jsonb 列,則所有列都使用 NULL 值處理。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 示例:nKn28資訊網(wǎng)——每日最新資訊28at.com

? 創(chuàng)建外部表:使用IMPORT FOREIGN SCHEMA,import_parquet_s3()和import_parquet_s3_explicit(),外部表將以固定的列定義進行創(chuàng)建,如下所示:

CREATE FOREIGN TABLE example (  v jsonb) OPTIONS (filename '/path/to/parquet_file', schemaless 'true');
nKn28資訊網(wǎng)——每日最新資訊28at.com

? 查詢數(shù)據(jù):

-- non-schemaless modeSELECT * FROM example; one |    two     | three |        four         |    five    | six | seven-----+------------+-------+---------------------+------------+-----+-------   1 | {1,2,3}    | foo   | 2018-01-01 00:00:00 | 2018-01-01 | t   |   0.5   2 | {NULL,5,6} | bar   | 2018-01-02 00:00:00 | 2018-01-02 | f   |(2 rows)-- schemaless modeSELECT * FROM example_schemaless;                                                                  v--------------------------------------------------------------------------------------------------------------------------------- {"one": 1, "six": "t", "two": [1, 2, 3], "five": "2018-01-01", "four": "2018-01-01 00:00:00", "seven": 0.5, "three": "foo"} {"one": 2, "six": "f", "two": [null, 5, 6], "five": "2018-01-02", "four": "2018-01-02 00:00:00", "seven": null, "three": "bar"}(2 rows)
nKn28資訊網(wǎng)——每日最新資訊28at.com

? 在 jsonb 表達式中獲取值:nKn28資訊網(wǎng)——每日最新資訊28at.com

? 使用 ->> jsonb 箭頭操作符,返回文本類型。用戶可以強制轉換 jsonb 表達式的類型,以獲得相應的數(shù)據(jù)表示。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 例如,獲取col值的表達式v->>'col',將是 parquet 文件中的列名col,我們稱之為schemaless variable或slvar。

SELECT v->>'two', sqrt((v->>'one')::int) FROM example_schemaless;  ?column?   |        sqrt--------------+--------------------[1, 2, 3]    |                  1[null, 5, 6] | 1.4142135623730951(2 rows)
nKn28資訊網(wǎng)——每日最新資訊28at.com

? 某些功能與non-schemaless模式不同nKn28資訊網(wǎng)——每日最新資訊28at.com

? 在sorted選項中定義列名,與non-schemaless mode相同nKn28資訊網(wǎng)——每日最新資訊28at.com

? 在ORDER BY子句中使用slvar代替列名。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 如果排序的 parquet 列不是文本列,請將此列顯式地強制轉換到映射類型。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 例如:

CREATE FOREIGN TABLE example_sorted (v jsonb)SERVER parquet_s3_srvOPTIONS (filename '/path/to/example1.parquet /path/to/example2.parquet', sorted 'int64_col', schemaless 'true');EXPLAIN (COSTS OFF) SELECT * FROM example_sorted ORDER BY (v->>'int64_col')::int8;          QUERY PLAN--------------------------------Foreign Scan on example_sorted  Reader: Multifile Merge  Row groups:    example1.parquet: 1, 2    example2.parquet: 1(5 rows)
nKn28資訊網(wǎng)——每日最新資訊28at.com

? slvar::type {operator} const。例如:(v->>'int64_col')::int8 = 100nKn28資訊網(wǎng)——每日最新資訊28at.com

? const {operator} slvar ::type。例如:100 = (v->>'int64_col')::int8nKn28資訊網(wǎng)——每日最新資訊28at.com

? slvar::boolean is true/false。例如:(v->>'bool_col')::boolean is falsenKn28資訊網(wǎng)——每日最新資訊28at.com

? !(slvar::boolean)。例如:!(v->>'bool_col')::booleannKn28資訊網(wǎng)——每日最新資訊28at.com

? Jsonb exist 運算符:((v->>'col')::jsonb) ? element、(v->'col') ? element和v ? 'col'nKn28資訊網(wǎng)——每日最新資訊28at.com

? 轉換函數(shù)必須映射 parquet 列類型,否則會跳過過濾器。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 行組過濾器支持:在無結構模式下,parquet_s3_fdw 可以通過一些如下的WHERE條件,支持對行組進行過濾:nKn28資訊網(wǎng)——每日最新資訊28at.com

? 要使用 parquet 文件的預排序列,用戶必須是:nKn28資訊網(wǎng)——每日最新資訊28at.com

? 支持對嵌套列表和映射表使用箭頭運算符:這些類型將被視為嵌套的 jsonb 值,可以通過->操作符訪問。例如:

SELECT * FROM example_schemaless;                                  v----------------------------------------------------------------------------{"array_col": [19, 20], "jsonb_col": {"1": "foo", "2": "bar", "3": "baz"}}{"array_col": [21, 22], "jsonb_col": {"4": "test1", "5": "test2"}}(2 rows)SELECT v->'array_col'->1, v->'jsonb_col'->'1' FROM example3;?column? | ?column?----------+----------20       | "foo"22       |(2 rows)
nKn28資訊網(wǎng)——每日最新資訊28at.com

? Postgres 計算(jsonb->>'col')::type的成本,比在non-schemaless模式下直接獲取列要大得多,在一些復雜的查詢中,schemaless模式的查詢計劃可能與non-schemaless模式不同。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 對于其他功能,schemaless模式與non-schemaless模式工作相同。nKn28資訊網(wǎng)——每日最新資訊28at.com

可寫的 FDW

用戶可以對已設置鍵列的外表,執(zhí)行 insert、update 和 delete 語句。nKn28資訊網(wǎng)——每日最新資訊28at.com

鍵列

? 在結構化模式下:可以通過使用 OPTIONS (key 'true') 創(chuàng)建 parquet_s3_fdw 外表對象,來設置鍵列:nKn28資訊網(wǎng)——每日最新資訊28at.com

CREATE FOREIGN TABLE userdata (    id1          int OPTIONS(key 'true'),    id2          int OPTIONS(key 'true'),    first_name   text,    last_name    text) SERVER parquet_s3_srvOPTIONS (    filename 's3://bucket/dir/userdata1.parquet');

? 在無結構模式下,可以在創(chuàng)建 parquet_s3_fdw 外部表對象時,使用key_columns選項設置鍵列:nKn28資訊網(wǎng)——每日最新資訊28at.com

CREATE FOREIGN TABLE userdata (    v JSONB) SERVER parquet_s3_srvOPTIONS (    filename 's3://bucket/dir/userdata1.parquet',    schemaless 'true',    key_columns 'id1 id2');

? key_columns選項可用于 IMPORT FOREIGN SCHEMA 功能:nKn28資訊網(wǎng)——每日最新資訊28at.com

-- in schemaless modeIMPORT FOREIGN SCHEMA 's3://data/' FROM SERVER parquet_s3_srv INTO tmp_schemaOPTIONS (sorted 'c1', schemaless 'true', key_columns 'id1 id2');-- corresponding CREATE FOREIGN TABLECREATE FOREIGN TABLE tbl1 (      v jsonb) SERVER parquet_s3_srvOPTIONS (filename 's3://data/tbl1.parquet', sorted 'c1', schemaless 'true', key_columns 'id1 id2');-- in non-schemaless modeIMPORT FOREIGN SCHEMA 's3://data/' FROM SERVER parquet_s3_srv INTO tmp_schemaOPTIONS (sorted 'c1', schemaless 'true', key_columns 'id1 id2');-- corresponding CREATE FOREIGN TABLECREATE FOREIGN TABLE tbl1 (      id1 INT OPTIONS (key 'true'),      id2 INT OPTIONS (key 'true'),      c1  TEXT,      c2  FLOAT) SERVER parquet_s3_srvOPTIONS (filename 's3://data/tbl1.parquet', sorted 'c1');

insert_file_selector 選項

parquet_s3_fdw 用來在 INSERT 查詢中檢索目標 parquet 文件的用戶定義函數(shù)簽名:nKn28資訊網(wǎng)——每日最新資訊28at.com

CREATE FUNCTION insert_file_selector_func(one INT8, dirname text)RETURNS TEXT AS$$    SELECT (dirname || '/example7.parquet')::TEXT;$$LANGUAGE SQL;CREATE FOREIGN TABLE example_func (one INT8 OPTIONS (key 'true'), two TEXT)SERVER parquet_s3_srvOPTIONS (    insert_file_selector 'insert_file_selector_func(one, dirname)',    dirname '/tmp/data_local/data/test',    sorted 'one');

? insert_file_selector 函數(shù)簽名規(guī)格:nKn28資訊網(wǎng)——每日最新資訊28at.com

? dirname arg:dirname 選項的值。nKn28資訊網(wǎng)——每日最新資訊28at.com

? column args:按名稱從插入槽位中獲取。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 語法:[function name]([arg name] , [arg name] ...)nKn28資訊網(wǎng)——每日最新資訊28at.com

? 默認返回類型為TEXT(parquet 文件的完整路徑)nKn28資訊網(wǎng)——每日最新資訊28at.com

? [arg name]:必須是外部表的列名或dirnamenKn28資訊網(wǎng)——每日最新資訊28at.com

? args 值:nKn28資訊網(wǎng)——每日最新資訊28at.com

排序列:

parquet_s3_fdw 支持在修改功能中保持排序列的排序狀態(tài)。nKn28資訊網(wǎng)——每日最新資訊28at.com

Parquet 文件結構:

基本上,parquet 文件結構是根據(jù)一組列名和相應的類型定義的,但在 parquet_s3_fdw 的掃描中,它假定所有具有相同名稱的列都具有相同的類型。因此,在修改功能中,也會使用該假設。nKn28資訊網(wǎng)——每日最新資訊28at.com

從 postgres 類型到 arrow 類型的映射:

  • ? 基礎類型映射:

SQL 類型
nKn28資訊網(wǎng)——每日最新資訊28at.com

Arrow 類型
nKn28資訊網(wǎng)——每日最新資訊28at.com

BOOL
nKn28資訊網(wǎng)——每日最新資訊28at.com

BOOL
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT2
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT16
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT4
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT32
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT8
nKn28資訊網(wǎng)——每日最新資訊28at.com

INT64
nKn28資訊網(wǎng)——每日最新資訊28at.com

FLOAT4
nKn28資訊網(wǎng)——每日最新資訊28at.com

FLOAT
nKn28資訊網(wǎng)——每日最新資訊28at.com

FLOAT8
nKn28資訊網(wǎng)——每日最新資訊28at.com

DOUBLE
nKn28資訊網(wǎng)——每日最新資訊28at.com

TIMESTAMP/TIMESTAMPTZ
nKn28資訊網(wǎng)——每日最新資訊28at.com

TIMESTAMP
nKn28資訊網(wǎng)——每日最新資訊28at.com

DATE
nKn28資訊網(wǎng)——每日最新資訊28at.com

DATE32
nKn28資訊網(wǎng)——每日最新資訊28at.com

TEXT
nKn28資訊網(wǎng)——每日最新資訊28at.com

STRING
nKn28資訊網(wǎng)——每日最新資訊28at.com

BYTEA
nKn28資訊網(wǎng)——每日最新資訊28at.com

BINARY
nKn28資訊網(wǎng)——每日最新資訊28at.com

? arrow::TIMESTAMP 的默認時間精度為 UTC 時區(qū)的微秒級。nKn28資訊網(wǎng)——每日最新資訊28at.com

? LIST 是由它的元素類型創(chuàng)建的,對于元素只支持基礎類型。nKn28資訊網(wǎng)——每日最新資訊28at.com

? MAP 由其 jsonb 元素的類型來創(chuàng)建的:nKn28資訊網(wǎng)——每日最新資訊28at.com

jsonb 類型
nKn28資訊網(wǎng)——每日最新資訊28at.com

Arrow 類型
nKn28資訊網(wǎng)——每日最新資訊28at.com

text
nKn28資訊網(wǎng)——每日最新資訊28at.com

STRING
nKn28資訊網(wǎng)——每日最新資訊28at.com

numeric
nKn28資訊網(wǎng)——每日最新資訊28at.com

FLOAT8
nKn28資訊網(wǎng)——每日最新資訊28at.com

boolean
nKn28資訊網(wǎng)——每日最新資訊28at.com

BOOL
nKn28資訊網(wǎng)——每日最新資訊28at.com

null
nKn28資訊網(wǎng)——每日最新資訊28at.com

STRING
nKn28資訊網(wǎng)——每日最新資訊28at.com

其他類型
nKn28資訊網(wǎng)——每日最新資訊28at.com

STRING
nKn28資訊網(wǎng)——每日最新資訊28at.com

? 在無結構模式下:nKn28資訊網(wǎng)——每日最新資訊28at.com

? 在結構化模式下,基礎的 jsonb 類型的映射與 MAP 相同。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 對于無結構模式下的第一個嵌套的 jsonb:nKn28資訊網(wǎng)——每日最新資訊28at.com

jsonb 類型
nKn28資訊網(wǎng)——每日最新資訊28at.com

Arrow 類型
nKn28資訊網(wǎng)——每日最新資訊28at.com

array
nKn28資訊網(wǎng)——每日最新資訊28at.com

LIST
nKn28資訊網(wǎng)——每日最新資訊28at.com

object
nKn28資訊網(wǎng)——每日最新資訊28at.com

MAP
nKn28資訊網(wǎng)——每日最新資訊28at.com

? 在結構化模式下,LIST 和 MAP 的元素類型與 MAP 類型相同。nKn28資訊網(wǎng)——每日最新資訊28at.com

INSERT

-- non-schemaless modeCREATE FOREIGN TABLE example_insert (    c1 INT2 OPTIONS (key 'true'),    c2 TEXT,    c3 BOOLEAN) SERVER parquet_s3_srv OPTIONS (filename 's3://data/example_insert.parquet');INSERT INTO example_insert VALUES (1, 'text1', true), (2, DEFAULT, false), ((select 3), (select i from (values('values are fun!')) as foo (i)), true);INSERT 0 3SELECT * FROM example_insert; c1 |       c2        | c3----+-----------------+----  1 | text1           | t  2 |                 | f  3 | values are fun! | t(3 rows)-- schemaless modeCREATE FOREIGN TABLE example_insert_schemaless (    v JSONB) SERVER parquet_s3_srv OPTIONS (filename 's3://data/example_insert.parquet', schemaless 'true', key_column 'c1');INSERT INTO example_insert_schemaless VALUES ('{"c1": 1, "c2": "text1", "c3": true}'), ('{"c1": 2, "c2": null, "c3": false}'), ('{"c1": 3, "c2": "values are fun!", "c3": true}');SELECT * FROM example_insert_schemaless;                       v----------------------------------------------- {"c1": 1, "c2": "text1", "c3": "t"} {"c1": 2, "c2": null, "c3": "f"} {"c1": 3, "c2": "values are fun!", "c3": "t"}(3 rows)

? 選擇要插入的文件:nKn28資訊網(wǎng)——每日最新資訊28at.com

? 目標文件是第一個其結構與插入記錄匹配(插入記錄的所有列都存在于目標文件中)的文件。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 如果沒有符合其結構的文件與插入記錄的列匹配,并且已指定dirname選項。創(chuàng)建新文件,文件名格式為:[foreign_table_name]_[date_time].parquetnKn28資訊網(wǎng)——每日最新資訊28at.com

? 否則,會引發(fā)錯誤消息。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 如果目標文件不存在,則創(chuàng)建與目標文件同名的新文件。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 如果目標文件存在,但其結構與插入記錄的列不匹配,則會引發(fā)錯誤消息。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 如果存在選項insert_file_selector,目標文件就是該函數(shù)的結果。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 如果選項insert_file_selector不存在:nKn28資訊網(wǎng)——每日最新資訊28at.com

? 新文件的結構:nKn28資訊網(wǎng)——每日最新資訊28at.com

? 從現(xiàn)有文件列表中獲取。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 如果在任何文件中都不存在列:根據(jù)預定義的映射類型創(chuàng)建基礎文件。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 在結構化模式下,新文件將所有列都存在于外部表中。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 在無結構模式下,新文件將在 jsonb 值中帶上所有列。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 列信息:nKn28資訊網(wǎng)——每日最新資訊28at.com

UPDATE/DELETE

-- non-schemaless modeCREATE FOREIGN TABLE example (    c1 INT2 OPTIONS (key 'true'),    c2 TEXT,    c3 BOOLEAN) SERVER parquet_s3_srv OPTIONS (filename 's3://data/example.parquet');SELECT * FROM example; c1 |       c2        | c3----+-----------------+----  1 | text1           | t  2 |                 | f  3 | values are fun! | t(3 rows)UPDATE example SET c3 = false WHERE c2 = 'text1';UPDATE 1SELECT * FROM example; c1 |       c2        | c3----+-----------------+----  1 | text1           | f  2 |                 | f  3 | values are fun! | t(3 rows)DELETE FROM example WHERE c1 = 2;DELETE 1SELECT * FROM example; c1 |       c2        | c3----+-----------------+----  1 | text1           | f  3 | values are fun! | t(2 rows)-- schemaless modeCREATE FOREIGN TABLE example_schemaless (    v JSONB) SERVER parquet_s3_srv OPTIONS (filename 's3://data/example.parquet', schemaless 'true', key_columns 'c1');SELECT * FROM example_schemaless;                       v----------------------------------------------- {"c1": 1, "c2": "text1", "c3": "t"} {"c1": 2, "c2": null, "c3": "f"} {"c1": 3, "c2": "values are fun!", "c3": "t"}(3 rows)UPDATE example_schemaless SET v='{"c3":false}' WHERE v->>'c2' = 'text1';UPDATE 1SELECT * FROM example_schemaless;                       v----------------------------------------------- {"c1": 1, "c2": "text1", "c3": "f"} {"c1": 2, "c2": null, "c3": "f"} {"c1": 3, "c2": "values are fun!", "c3": "t"}(3 rows)DELETE FROM example_schemaless WHERE (v->>'c1')::int = 2;DELETE 1SELECT * FROM example_schemaless;                       v----------------------------------------------- {"c1": 1, "c2": "text1", "c3": "f"} {"c1": 3, "c2": "values are fun!", "c3": "t"}(2 rows)

限制

? 不支持事務。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 無法同時在文件系統(tǒng)和 Amazon S3 上使用 parquet 文件創(chuàng)建單個外部表。nKn28資訊網(wǎng)——每日最新資訊28at.com

? import_parquet_s3_explicit()函數(shù)的第 4 和第 5 個參數(shù),在schemaless模式下沒有意義。nKn28資訊網(wǎng)——每日最新資訊28at.com

WARNING: parquet_s3_fdw: attnames and atttypes are expected to be NULL. They are meaningless for schemaless table.HINT: Schemaless table imported always contain "v" column with "jsonb" type.

? 這些參數(shù)應該定義為NULL值。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 如果這些參數(shù)不是 NULL 值,則會出現(xiàn)下面的WARNING:nKn28資訊網(wǎng)——每日最新資訊28at.com

? schemaless模式不支持通過CREATE TABLE parent_tbl (v jsonb) PARTITION BY RANGE((v->>'a')::int)創(chuàng)建分區(qū)表。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 在修改功能中:nKn28資訊網(wǎng)——每日最新資訊28at.com

? 對于大文件,性能不太好。nKn28資訊網(wǎng)——每日最新資訊28at.com

? 當完全相同的文件同時修改時,結果會出現(xiàn)不一致。nKn28資訊網(wǎng)——每日最新資訊28at.com

? parquet_s3_fdw修改 parquet 文件的方法是,從目標 parquet 文件創(chuàng)建可修改的緩存數(shù)據(jù),并覆蓋舊文件:nKn28資訊網(wǎng)——每日最新資訊28at.com

? 不支持 WITH CHECK OPTION、ON CONFLICT 和 RETURNING。nKn28資訊網(wǎng)——每日最新資訊28at.com

? sorted列僅支持這些類型:int2、int4、int8、date、timestamp、float4、float8。nKn28資訊網(wǎng)——每日最新資訊28at.com

? key列僅支持這些類型:int2、int4、int8、date、timestamp、float4、float8和text。nKn28資訊網(wǎng)——每日最新資訊28at.com

? key列的值必須是唯一的,parquet_s3_fdw不支持檢查鍵列的唯一值,用戶必須做好檢查。nKn28資訊網(wǎng)——每日最新資訊28at.com

? key列僅用于 UPDATE/UPDATE。nKn28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-88730-0.htmlOracle 數(shù)據(jù)量 150T,PostgreSQL 能搞定嗎?

聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 零基礎入門:使用Python pyWinAuto自動化你的Windows任務

下一篇: SpringBoot項目中這十個開發(fā)技巧,你都知道嗎?

標簽:
  • 熱門焦點
  • 6月安卓手機性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經(jīng)正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發(fā)布之前,性能榜的榜單大體會以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領先
  • Raft算法:保障分布式系統(tǒng)共識的穩(wěn)健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可復制、可冗余、可容錯”)的首字母縮寫。Raft算法是一種用于在分布式系統(tǒng)
  • 三言兩語說透設計模式的藝術-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創(chuàng)建型設計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態(tài)工廠方法模式,不屬于GoF 23種設計
  • 把LangChain跑起來的三個方法

    使用LangChain開發(fā)LLM應用時,需要機器進行GLM部署,好多同學第一步就被勸退了,那么如何繞過這個步驟先學習LLM模型的應用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • 企業(yè)采用CRM系統(tǒng)的11個好處

    客戶關系管理(CRM)軟件可以為企業(yè)提供很多的好處,從客戶保留到提高生產(chǎn)力。  CRM軟件用于企業(yè)收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規(guī)模如今超過580
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元“人在職場,應該選擇什么樣的著裝?”近日,在網(wǎng)絡上,一個與著裝相關的帖子引發(fā)關注,在該帖子里,一位在高級寫字樓亞洲金
  • 3699元!iQOO Neo8 Pro頂配版今日首銷:1TB UFS 4.0同價位唯一

    5月23日,iQOO推出了全新的iQOO Neo8系列,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更是首發(fā)搭載了聯(lián)發(fā)科天璣9200+旗艦
  • 2299元起!iQOO Pad開啟預售:性能最強天璣平板

    5月23日,iQOO如期舉行了新品發(fā)布會,除了首發(fā)安卓最強旗艦處理器的iQOO Neo8系列新機外,還在發(fā)布會上推出了旗下首款平板電腦——iQOO Pad,其搭載了天璣
  • iQOO Neo8系列新品發(fā)布會

    旗艦雙芯 更強更Pro
Top