Iceberg 連接器¶
概觀¶
Iceberg 連接器允許查詢儲存在 Iceberg 表格中的資料。
中繼資料儲存區¶
Iceberg 表格將大部分的中繼資料儲存在中繼資料檔案中,以及檔案系統上的資料,但它仍然需要一個中心位置來尋找表格目前中繼資料指標的目前位置。這個中心位置稱為 Iceberg 目錄
。Presto Iceberg 連接器支援不同類型的 Iceberg 目錄: HIVE
、NESSIE
、REST
和 HADOOP
。
若要設定 Iceberg 連接器,請建立目錄屬性檔案 etc/catalog/iceberg.properties
。若要定義目錄類型,iceberg.catalog.type
屬性是必要的,以及以下內容,屬性值會被取代如下
Hive 中繼資料儲存區目錄¶
Iceberg 連接器支援與 Hive 連接器相同的 HMS 設定。
connector.name=iceberg
hive.metastore.uri=hostname:port
iceberg.catalog.type=hive
Glue 目錄¶
Iceberg 連接器支援與 Hive 連接器相同的 Glue 設定。
connector.name=iceberg
hive.metastore=glue
iceberg.catalog.type=hive
當使用設定了 Hive 或 Glue 目錄的 Iceberg 連接器時,可以使用其他設定。
屬性名稱 |
描述 |
預設值 |
---|---|---|
|
使用 Thrift 通訊協定連線的 Hive 中繼資料儲存區的 URI。如果提供多個 URI,則預設會使用第一個 URI,而其餘的 URI 則為後援中繼資料儲存區。 範例: 如果 |
|
|
從 Hive 中繼資料儲存區使用統計資料來覆寫 Iceberg 表格統計資料的逗號分隔清單。可用值為 注意:僅當 Iceberg 連接器設定了 Hive 時才有效。 |
|
|
在重新整理表格中繼資料時,重試之間睡眠的最短時間。 |
100 毫秒 |
|
在重新整理表格中繼資料時,重試之間睡眠的最長時間。 |
5 秒 |
|
在失敗表格中繼資料重新整理作業之前,在所有重試中花費的最長時間。 |
1 分鐘 |
|
在使用 Hive 中繼資料儲存區重新整理表格中繼資料時,發生錯誤後重試的次數。 |
20 |
|
用於縮放重試之間後續等待時間的倍數。 |
4.0 |
Nessie 目錄¶
若要使用 Nessie 目錄,請將目錄類型設定為 iceberg.catalog.type=nessie
。
connector.name=iceberg
iceberg.catalog.type=nessie
iceberg.catalog.warehouse=/tmp
iceberg.nessie.uri=https://127.0.0.1:19120/api/v1
Nessie 目錄的其他支援屬性
屬性名稱 |
描述 |
---|---|
|
用於 Nessie 的分支/標籤,預設為 |
|
Nessie API 端點 URI(必要)。範例: |
|
要使用的驗證類型。可用值為 注意: Nessie BASIC 驗證類型已過時,這將在即將發布的版本中移除 |
|
搭配 |
|
搭配 |
|
用於 |
|
向 Nessie 伺服器發出請求的讀取逾時時間(毫秒)。範例: |
|
向 Nessie 伺服器發出連線請求的連線逾時時間(毫秒)。範例: |
|
設定是否啟用對 Nessie 伺服器請求的壓縮,預設值為 |
|
要使用的自訂 ClientBuilder 實作類別設定。 |
使用 Docker 設定 Nessie¶
若要使用 Docker 映像在本地設定 Nessie 執行個體,請參閱設定 Nessie。一旦 Docker 執行個體啟動並執行,您應該會看到類似以下範例的記錄
2023-09-05 13:11:37,905 INFO [io.quarkus] (main) nessie-quarkus 0.69.0 on JVM (powered by Quarkus 3.2.4.Final) started in 1.921s. Listening on: http://0.0.0.0:19120
2023-09-05 13:11:37,906 INFO [io.quarkus] (main) Profile prod activated.
2023-09-05 13:11:37,906 INFO [io.quarkus] (main) Installed features: [agroal, amazon-dynamodb, cassandra-client, cdi, google-cloud-bigtable, hibernate-validator, jdbc-postgresql, logging-sentry, micrometer, mongodb-client, narayana-jta, oidc, opentelemetry, reactive-routes, resteasy, resteasy-jackson, security, security-properties-file, smallrye-context-propagation, smallrye-health, smallrye-openapi, swagger-ui, vertx]
如果與 Nessie 的 OpenTelemetry 收集器相關的記錄訊息與以下範例類似,您可以使用組態選項 quarkus.otel.sdk.disabled=true
來停用 OpenTelemetry。
2023-08-27 11:10:02,492 INFO [io.qua.htt.access-log] (executor-thread-1) 172.17.0.1 - - [27/Aug/2023:11:10:02 +0000] "GET /api/v1/config HTTP/1.1" 200 62
2023-08-27 11:10:05,007 SEVERE [io.ope.exp.int.grp.OkHttpGrpcExporter] (OkHttp https://127.0.0.1:4317/...) Failed to export spans. The request could not be executed. Full error message: Failed to connect to localhost/127.0.0.1:4317
例如,使用以下命令啟動 Docker 映像:docker run -p 19120:19120 -e QUARKUS_OTEL_SDK_DISABLED=true ghcr.io/projectnessie/nessie
有關此組態選項和其他相關選項的詳細資訊,請參閱OpenTelemetry 組態參考。
有關疑難排解 OpenTelemetry 追蹤的詳細資訊,請參閱疑難排解追蹤。
如果顯示類似以下範例的錯誤,這可能是因為您正在與 http 伺服器互動,而不是 https 伺服器。您需要將 iceberg.nessie.uri
設定為 https://127.0.0.1:19120/api/v1
。
Caused by: javax.net.ssl.SSLException: Unsupported or unrecognized SSL message
at sun.security.ssl.SSLSocketInputRecord.handleUnknownRecord(SSLSocketInputRecord.java:448)
at sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:174)
at sun.security.ssl.SSLTransport.decode(SSLTransport.java:111)
at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1320)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1233)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:417)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:389)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:558)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:201)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:167)
at org.projectnessie.client.http.impl.jdk8.UrlConnectionRequest.executeRequest(UrlConnectionRequest.java:71)
... 42 more
REST 目錄¶
若要使用 REST 目錄,請將目錄類型設定為 iceberg.catalog.type=rest
。最少的組態包含
connector.name=iceberg
iceberg.catalog.type=rest
iceberg.rest.uri=https://127.0.0.1:8181
REST 目錄的其他支援屬性
屬性名稱 |
描述 |
---|---|
|
REST API 端點 URI(必要)。範例: |
|
要使用的驗證類型。可用值為 |
|
用於 OAUTH2 驗證的憑證。範例: |
|
用於 OAUTH2 驗證的 Bearer 權杖。範例: |
|
與 REST 目錄通訊時要使用的會話類型。可用值為 |
|
Iceberg 資料表的目錄倉庫根路徑(選用)。範例: |
Hadoop 目錄¶
若要使用 Hadoop 目錄,請將目錄類型設定為 iceberg.catalog.type=hadoop
。最少的組態包含
connector.name=iceberg
iceberg.catalog.type=hadoop
iceberg.catalog.warehouse=hdfs://hostname:port
Hadoop 目錄組態屬性
屬性名稱 |
描述 |
預設值 |
---|---|---|
|
Iceberg 資料表的目錄倉庫根路徑。 範例: |
|
|
要快取的 Iceberg 目錄數量。如果 |
|
組態屬性¶
注意
Iceberg 連接器支援 Amazon S3 作為 Hive 連接器的組態選項。
以下組態屬性適用於所有目錄類型
屬性名稱 |
描述 |
預設值 |
---|---|---|
|
Iceberg 資料表的目錄類型。可用值為 |
|
|
Hadoop 組態資源的路徑。 範例: |
|
|
Iceberg 資料表的儲存檔案格式。可用值為 |
|
|
寫入檔案時要使用的壓縮編碼解碼器。可用值為 |
|
|
每個寫入器處理的最大分割數。 |
|
|
範圍 (0, 1] 中的小數值用作分配給每個分割的權重的最小值。較低的值可能會提高具有小檔案的資料表的效能。較高的值可能會提高具有高度傾斜的彙總或聯結查詢的效能。 |
|
|
啟用讀取使用合併讀取進行更新的基礎資料表。 |
|
|
啟用後,會將相等刪除列篩選套用為與相等刪除檔案資料的聯結。 |
|
|
啟用 parquet 取消參考下推。 |
|
|
在選取統計資料時,總記錄計數差異在計算最接近快照時的重要性。值 1 表示單一記錄相當於 1 毫秒的時間差異。 |
|
|
實驗性:啟用 Iceberg 的篩選下推。這僅在原生工作者中支援。 |
|
|
Iceberg 資料表中的最大分割數,以允許使用中繼資料最佳化該資料表的查詢。如果 Iceberg 資料表的分割數超過此閾值,則會跳過中繼資料最佳化。 設定為 |
|
|
用於產生 Iceberg 分割的執行緒數。 |
|
|
要保留在目前中繼資料記錄中的舊中繼資料檔案的最大數量。 |
|
|
設定為 |
|
資料表屬性¶
資料表屬性設定基礎資料表的中繼資料。這是 CREATE TABLE/CREATE TABLE AS 陳述式的關鍵。資料表屬性會使用 WITH 子句傳遞至連接器
CREATE TABLE tablename
WITH (
property_name = property_value,
...
)
以下資料表屬性可用,這些屬性是 Presto Iceberg 連接器所特有的
屬性名稱 |
描述 |
預設值 |
---|---|---|
|
選擇性地指定資料表資料檔案的格式,可以是 |
|
|
選擇性地指定資料表分割。如果資料表依欄 |
|
|
選擇性地指定資料表的檔案系統位置 URI。 |
|
|
選擇性地指定要用於新資料表的 Iceberg 規格的格式版本,可以是 |
|
|
決定在發生並行更新插入請求時,在失敗之前提交中繼資料的嘗試次數。 |
|
|
選擇性地指定要用於新資料表的 Iceberg 規格的寫入刪除模式,可以是 |
|
|
選擇性地指定要保留在目前中繼資料記錄中的舊中繼資料檔案的最大數量。 |
|
|
設定為 |
|
以下資料表定義指定格式 ORC
,依欄 c1
和 c2
分割,以及檔案系統位置為 s3://test_bucket/test_schema/test_table
CREATE TABLE test_table (
c1 bigint,
c2 varchar,
c3 double
)
WITH (
format = 'ORC',
partitioning = ARRAY['c1', 'c2'],
location = 's3://test_bucket/test_schema/test_table')
)
會話屬性¶
會話屬性設定在給定會話中執行的查詢的行為變更。
屬性名稱 |
描述 |
---|---|
|
覆寫目前連線中連接器屬性 |
|
覆寫目前連線中連接器屬性 |
|
覆寫目前連線中連接器屬性 |
快取支援¶
清單檔案快取¶
自 Iceberg 1.1.0 版本起,Apache Iceberg 提供一種機制,可將 Iceberg 清單檔案的內容快取至記憶體中。此功能有助於減少重複從遠端儲存讀取小型 Iceberg 清單檔案。
注意
目前,Presto Iceberg 連接器中的 Hadoop 和 Nessie 目錄支援清單檔案快取。
以下組態屬性可用
屬性名稱 |
描述 |
預設值 |
---|---|---|
|
啟用或停用清單快取功能。只有當 |
|
|
要在目錄中使用的自訂 FileIO 實作。必須設定此選項才能啟用清單快取。 |
|
|
快取大小上限(以位元組為單位)。 |
|
|
項目在清單快取中保留的最長持續時間(以毫秒為單位)。 |
|
|
要考慮快取的清單檔案最大長度(以位元組為單位)。長度超過此大小的清單檔案將不會被快取。 |
|
Alluxio 資料快取¶
Presto 工作節點會在讀取時,將遠端儲存資料以原始形式(已壓縮且可能已加密)快取至本機 SSD。
需要在 Iceberg 目錄檔案 (catalog/iceberg.properties) 中設定以下組態屬性
cache.enabled=true
cache.base-directory=file:///mnt/flash/data
cache.type=ALLUXIO
cache.alluxio.max-cache-size=1600GB
hive.node-selection-strategy=SOFT_AFFINITY
用於取得指標並驗證快取使用情況的 JMX 查詢
SELECT * FROM jmx.current."com.facebook.alluxio:name=client.cachehitrate,type=gauges";
SELECT * FROM jmx.current."com.facebook.alluxio:name=client.cachebytesreadcache,type=meters";
SHOW TABLES FROM jmx.current like '%alluxio%';
檔案和 Stripe 頁尾快取¶
在分葉工作節點記憶體中快取開啟的檔案描述元和 stripe 或檔案頁尾資訊。這些資料片段在讀取檔案時最常被存取。
需要在 Iceberg 目錄檔案 (catalog/iceberg.properties) 中設定以下組態屬性
# scheduling
hive.node-selection-strategy=SOFT_AFFINITY
# orc
iceberg.orc.file-tail-cache-enabled=true
iceberg.orc.file-tail-cache-size=100MB
iceberg.orc.file-tail-cache-ttl-since-last-access=6h
iceberg.orc.stripe-metadata-cache-enabled=true
iceberg.orc.stripe-footer-cache-size=100MB
iceberg.orc.stripe-footer-cache-ttl-since-last-access=6h
iceberg.orc.stripe-stream-cache-size=300MB
iceberg.orc.stripe-stream-cache-ttl-since-last-access=6h
# parquet
iceberg.parquet.metadata-cache-enabled=true
iceberg.parquet.metadata-cache-size=100MB
iceberg.parquet.metadata-cache-ttl-since-last-access=6h
用於取得指標並驗證快取使用情況的 JMX 查詢
SELECT * FROM jmx.current."com.facebook.presto.hive:name=iceberg_parquetmetadata,type=cachestatsmbean";
中繼資料儲存快取¶
中繼資料儲存快取僅快取結構描述、表格和表格統計資料。 tableCache 中快取的表格物件僅用於讀取表格中繼資料位置和表格屬性,而其餘表格中繼資料則從檔案系統/物件儲存中繼資料位置擷取。
注意
中繼資料儲存快取僅適用於 Presto Iceberg 連接器中的 Hive 目錄。
hive.metastore-cache-ttl=2d
hive.metastore-refresh-interval=3d
hive.metastore-cache-maximum-size=10000000
額外隱藏的中繼資料欄¶
Iceberg 連接器會公開額外的隱藏中繼資料欄。您可以將這些欄包含在 SELECT 陳述式中,以在 SQL 查詢中查詢它們。
$path
欄¶
$path
:此列的檔案完整檔案系統路徑名稱
SELECT "$path", regionkey FROM "ctas_nation";
$path | regionkey
---------------------------------+-----------
/full/path/to/file/file.parquet | 2
$data_sequence_number
欄¶
$data_sequence_number
:新增此列的 Iceberg 資料序列號碼
SELECT "$data_sequence_number", regionkey FROM "ctas_nation";
$data_sequence_number | regionkey
----------------------------------+------------
2 | 3
額外隱藏的中繼資料表格¶
Iceberg 連接器會公開額外的隱藏中繼資料表格。您可以將這些表格名稱附加到表格,以在 SQL 查詢中查詢它們。
$properties
表格¶
$properties
:指定表格的一般屬性
SELECT * FROM "ctas_nation$properties";
key | value
----------------------+---------
write.format.default | PARQUET
$history
表格¶
$history
:表格狀態變更的歷程記錄
SELECT * FROM "ctas_nation$history";
made_current_at | snapshot_id | parent_id | is_current_ancestor
--------------------------------------+---------------------+-----------+---------------------
2022-11-25 20:56:31.784 Asia/Kolkata | 7606232158543069775 | NULL | true
$snapshots
表格¶
$snapshots
:表格快照的詳細資料。如需詳細資訊,請參閱 Iceberg 表格規格中的 快照。
SELECT * FROM "ctas_nation$snapshots";
committed_at | snapshot_id | parent_id | operation | manifest_list | summary
--------------------------------------+---------------------+-----------+-----------+----------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2022-11-25 20:56:31.784 Asia/Kolkata | 7606232158543069775 | NULL | append | s3://my-bucket/ctas_nation/metadata/snap-7606232158543069775-1-395a2cad-b244-409b-b030-cc44949e5a4e.avro | {changed-partition-count=1, added-data-files=1, total-equality-deletes=0, added-records=25, total-position-deletes=0, added-files-size=1648, total-delete-files=0, total-files-size=1648, total-records=25, total-data-files=1}
$manifests
表格¶
$manifests
:不同表格快照的清單詳細資料。如需詳細資訊,請參閱 Iceberg 表格規格中的 清單。
SELECT * FROM "ctas_nation$manifests";
path | length | partition_spec_id | added_snapshot_id | added_data_files_count | existing_data_files_count | deleted_data_files_count | partitions
---------------------------------------------------------------------------------+--------+-------------------+---------------------+------------------------+---------------------------+--------------------------+-----------
s3://my-bucket/ctas_nation/metadata/395a2cad-b244-409b-b030-cc44949e5a4e-m0.avro | 5957 | 0 | 7606232158543069775 | 1 | 0 | 0 | []
$partitions
表格¶
$partitions
:表格的詳細分割資訊
SELECT * FROM "ctas_nation$partitions";
row_count | file_count | total_size | nationkey | name | regionkey | comment
-----------+------------+------------+-------------------------------+------------------------------------------+------------------------------+------------------------------------------------------------
25 | 1 | 1648 | {min=0, max=24, null_count=0} | {min=ALGERIA, max=VIETNAM, null_count=0} | {min=0, max=4, null_count=0} | {min= haggle. careful, max=y final packaget, null_count=0}
$files
表格¶
$files
:表格目前快照中資料檔案的概觀
SELECT * FROM "ctas_nation$files";
content | file_path | file_format | record_count | file_size_in_bytes | column_sizes | value_counts | null_value_counts | nan_value_counts | lower_bounds | upper_bounds | key_metadata | split_offsets | equality_ids
---------+------------------------------------------------------------------------------+-------------+--------------+--------------------+-----------------------------+--------------------------+----------------------+------------------+-------------------------------------------+--------------------------------------------+--------------+---------------+-------------
0 | s3://my-bucket/ctas_nation/data/9f889274-6f74-4d28-8164-275eef99f660.parquet | PARQUET | 25 | 1648 | {1=52, 2=222, 3=105, 4=757} | {1=25, 2=25, 3=25, 4=25} | {1=0, 2=0, 3=0, 4=0} | NULL | {1=0, 2=ALGERIA, 3=0, 4= haggle. careful} | {1=24, 2=VIETNAM, 3=4, 4=y final packaget} | NULL | NULL | NULL
$changelog
表格¶
此表格可讓您檢視表格隨著時間依特定順序發生的列層級變更。 $changelog
表格代表表格的變更歷程記錄,同時也讓資料可透過查詢來處理。
變更記錄查詢的結果一律會傳回具有四個欄的靜態結構描述
operation
:(VARCHAR
)指出列是插入、更新或刪除。ordinal
:(int
)一個數字,指出相對於所有其他變更,必須將特定變更套用至表格的相對順序。snapshotid
:(bigint
)表示進行列層級變更的快照。rowdata
:(row(T)
)其中包含特定列的資料。此類型的內部值符合父表格的結構描述。
可以使用下列名稱格式查詢變更記錄表格
... FROM "<table>[@<begin snapshot ID>]$changelog[@<end snapshot ID>]"
<table>
是表格的名稱。<begin snapshot ID>
是您想要開始檢視變更的表格快照。此參數為選用參數。如果不存在,則使用最早可用的快照。<end snapshot ID>
是您想要檢視變更的最後一個快照。此參數為選用參數。如果不存在,則使用表格的最新快照。
$changelog
表格的一個用途是找出何時將記錄插入表格或從表格中移除。若要完成此操作,可以將 $changelog
表格與 $snapshots
表格搭配使用。首先,從 $snapshots
表格中選擇快照 ID,以選擇起點。
SELECT * FROM "orders$snapshots";
committed_at | snapshot_id | parent_id | operation | manifest_list | summary
---------------------------------------------+---------------------+---------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2023-09-26 08:45:20.930 America/Los_Angeles | 2423571386296047175 | NULL | append | file:/var/folders/g_/6_hxl7r16qdddw7956j_r88h0000gn/T/PrestoTest8140889264166671718/catalog/tpch/ctas_orders/metadata/snap-2423571386296047175-1-3f288b1c-95a9-406b-9e17-9cfe31a11b48.avro | {changed-partition-count=1, added-data-files=4, total-equality-deletes=0, added-records=100, total-position-deletes=0, added-files-size=9580, total-delete-files=0, total-files-size=9580, total-records=100, total-data-files=4}
2023-09-26 08:45:36.942 America/Los_Angeles | 8702997868627997320 | 2423571386296047175 | append | file:/var/folders/g_/6_hxl7r16qdddw7956j_r88h0000gn/T/PrestoTest8140889264166671718/catalog/tpch/ctas_orders/metadata/snap-8702997868627997320-1-a2e1c714-7eed-4e2c-b144-dae4147ebaa4.avro | {changed-partition-count=1, added-data-files=1, total-equality-deletes=0, added-records=1, total-position-deletes=0, added-files-size=1687, total-delete-files=0, total-files-size=11267, total-records=101, total-data-files=5}
2023-09-26 08:45:39.866 America/Los_Angeles | 7615903782581283889 | 8702997868627997320 | append | file:/var/folders/g_/6_hxl7r16qdddw7956j_r88h0000gn/T/PrestoTest8140889264166671718/catalog/tpch/ctas_orders/metadata/snap-7615903782581283889-1-d94c2114-fd22-4de2-9ab5-c0b5bf67282f.avro | {changed-partition-count=1, added-data-files=3, total-equality-deletes=0, added-records=3, total-position-deletes=0, added-files-size=4845, total-delete-files=0, total-files-size=16112, total-records=104, total-data-files=8}
2023-09-26 08:45:48.404 America/Los_Angeles | 677209275408372885 | 7615903782581283889 | append | file:/var/folders/g_/6_hxl7r16qdddw7956j_r88h0000gn/T/PrestoTest8140889264166671718/catalog/tpch/ctas_orders/metadata/snap-677209275408372885-1-ad69e208-1440-459b-93e8-48e61f961758.avro | {changed-partition-count=1, added-data-files=3, total-equality-deletes=0, added-records=5, total-position-deletes=0, added-files-size=4669, total-delete-files=0, total-files-size=20781, total-records=109, total-data-files=11}
現在我們知道可在變更記錄中查詢的快照,我們可以查看表格建立後對表格進行了哪些變更。具體而言,此範例使用最早的快照 ID: 2423571386296047175
SELECT * FROM "ctas_orders@2423571386296047175$changelog" ORDER BY ordinal;
operation | ordinal | snapshotid | rowdata
-----------+---------+---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
INSERT | 0 | 8702997868627997320 | {orderkey=37504, custkey=1291, orderstatus=O, totalprice=165509.83, orderdate=1996-03-04, orderpriority=5-LOW, clerk=Clerk#000000871, shippriority=0, comment=c theodolites alongside of the fluffily bold requests haggle quickly against }
INSERT | 1 | 7615903782581283889 | {orderkey=12001, custkey=739, orderstatus=F, totalprice=138635.75, orderdate=1994-07-07, orderpriority=2-HIGH, clerk=Clerk#000000863, shippriority=0, comment=old, even theodolites. regular, special theodolites use furio}
INSERT | 1 | 7615903782581283889 | {orderkey=17989, custkey=364, orderstatus=F, totalprice=133669.05, orderdate=1994-01-17, orderpriority=4-NOT SPECIFIED, clerk=Clerk#000000547, shippriority=0, comment=ously express excuses. even theodolit}
INSERT | 1 | 7615903782581283889 | {orderkey=37504, custkey=1291, orderstatus=O, totalprice=165509.83, orderdate=1996-03-04, orderpriority=5-LOW, clerk=Clerk#000000871, shippriority=0, comment=c theodolites alongside of the fluffily bold requests haggle quickly against }
INSERT | 2 | 677209275408372885 | {orderkey=17991, custkey=92, orderstatus=O, totalprice=20732.51, orderdate=1998-07-09, orderpriority=4-NOT SPECIFIED, clerk=Clerk#000000636, shippriority=0, comment= the quickly express accounts. iron}
INSERT | 2 | 677209275408372885 | {orderkey=17989, custkey=364, orderstatus=F, totalprice=133669.05, orderdate=1994-01-17, orderpriority=4-NOT SPECIFIED, clerk=Clerk#000000547, shippriority=0, comment=ously express excuses. even theodolit}
INSERT | 2 | 677209275408372885 | {orderkey=17990, custkey=458, orderstatus=O, totalprice=218031.58, orderdate=1998-03-18, orderpriority=3-MEDIUM, clerk=Clerk#000000340, shippriority=0, comment=ounts wake final foxe}
INSERT | 2 | 677209275408372885 | {orderkey=18016, custkey=403, orderstatus=O, totalprice=174070.99, orderdate=1996-03-19, orderpriority=1-URGENT, clerk=Clerk#000000629, shippriority=0, comment=ly. quickly ironic excuses are furiously. carefully ironic pack}
INSERT | 2 | 677209275408372885 | {orderkey=18017, custkey=958, orderstatus=F, totalprice=203091.02, orderdate=1993-03-26, orderpriority=1-URGENT, clerk=Clerk#000000830, shippriority=0, comment=sleep quickly bold requests. slyly pending pinto beans haggle in pla}
程序¶
使用 CALL 陳述式來執行資料操作或管理工作。程序可在目錄的 system
結構描述中使用。
註冊表格¶
可以使用目錄註冊檔案系統中已存在表格資料和中繼資料的 Iceberg 表格。在目錄的 system
結構描述上使用 register_table
程序,並提供目標結構描述、所需的表格名稱以及表格中繼資料的位置
CALL iceberg.system.register_table('schema_name', 'table_name', 'hdfs://127.0.0.1:9000/path/to/iceberg/table/metadata/dir')
注意
如果指定位置存在多個相同版本的中繼資料檔案,則會使用最近修改的檔案。
可以選擇性地將中繼資料檔案作為 register_table
的引數包含在內,其中特定中繼資料檔案包含目標表格狀態
CALL iceberg.system.register_table('schema_name', 'table_name', 'hdfs://127.0.0.1:9000/path/to/iceberg/table/metadata/dir', '00000-35a08aed-f4b0-4010-95d2-9d73ef4be01c.metadata.json')
注意
Iceberg REST 目錄可能不支援表格註冊,具體取決於後端目錄的類型。
注意
使用 Hive 中繼資料儲存註冊表格時,呼叫程序的使用者會設定為表格的擁有者,並具有該表格的 SELECT
、 INSERT
、 UPDATE
和 DELETE
權限。可以使用 GRANT
和 REVOKE
命令變更這些權限。
注意
使用 Hive 目錄時,嘗試使用 Hive 連接器讀取註冊的 Iceberg 表格將會失敗。
取消註冊表格¶
可以使用目錄的 system
結構描述上的 unregister_table
程序,從目錄中取消註冊 Iceberg 表格
CALL iceberg.system.unregister_table('schema_name', 'table_name')
注意
僅當使用 Hive 目錄時,在呼叫 unregister_table
後,表格資料和中繼資料仍會保留在檔案系統中。這類似於 DROP TABLE 命令的列出行為。
回復至快照¶
將表格回復至特定快照 ID。Iceberg 可以透過在 Iceberg 的 system
結構描述上使用 rollback_to_snapshot
程序,回復至特定快照 ID
CALL iceberg.system.rollback_to_snapshot('table_name', 'snapshot_id');
以下引數可用
引數名稱 |
必要 |
類型 |
描述 |
---|---|---|---|
|
✔️ |
字串 |
要更新的表格名稱 |
|
✔️ |
長整數 |
要回復至的快照 ID |
過期快照¶
Iceberg 中的每個 DML (資料操作語言) 動作都會產生新的快照,同時保留舊資料和中繼資料,以進行快照隔離和時間回溯。使用 expire_snapshots 來移除較舊的快照及其檔案。
此程序會移除舊快照及其對應的檔案,並且永遠不會移除非過期快照所需的檔案。
以下引數可用
引數名稱 |
必要 |
類型 |
描述 |
---|---|---|---|
|
✔️ |
字串 |
要更新的表格結構描述 |
|
✔️ |
字串 |
要更新的表格名稱 |
|
時間戳記 |
將移除快照之前的時間戳記(預設值:5 天前) |
|
|
整數 |
要保留的祖先快照數目,無論 older_than 設定為何(預設值為 1) |
|
|
長整數陣列 |
要過期的快照 ID 陣列 |
範例
移除特定日期和時間之前的快照,但保留最後 10 個快照
CALL iceberg.system.expire_snapshots('schema_name', 'table_name', TIMESTAMP '2023-08-31 00:00:00.000', 10);
移除快照 ID 為 10001 和 10002 的快照 (請注意,這些快照 ID 不應為目前的快照)。
CALL iceberg.system.expire_snapshots(schema => 'schema_name', table_name => 'table_name', snapshot_ids => ARRAY[10001, 10002]);
移除孤立檔案¶
用於移除 Iceberg 表格中任何中繼資料檔案皆未參考的檔案。
以下引數可用
引數名稱 |
必要 |
類型 |
描述 |
---|---|---|---|
|
✔️ |
字串 |
要清除的表格結構描述 |
|
✔️ |
字串 |
要清除的表格名稱 |
|
時間戳記 |
移除在此時間戳記之前建立的孤立檔案(預設:3 天前) |
範例
移除任何不屬於表格 db.sample 且早於指定時間戳記的檔案
CALL iceberg.system.remove_orphan_files('db', 'sample', TIMESTAMP '2023-08-31 00:00:00.000');
移除任何不屬於表格 db.sample 且在 3 天前建立的檔案 (預設)
CALL iceberg.system.remove_orphan_files(schema => 'db', table_name => 'sample');
SQL 支援¶
Iceberg 連接器支援查詢和操作 Iceberg 表格和結構描述(資料庫)。以下是一些 Presto 支援的 SQL 操作範例
CREATE SCHEMA¶
建立一個名為 web
的新 Iceberg 結構描述,該結構描述將表格儲存在名為 my-bucket
的 S3 儲存貯體中
CREATE SCHEMA iceberg.web
WITH (location = 's3://my-bucket/')
CREATE TABLE¶
在 web
結構描述中建立一個名為 page_views
的新 Iceberg 表格,該表格使用 ORC 檔案格式儲存,並依 ds
和 country
分割
CREATE TABLE iceberg.web.page_views (
view_time timestamp,
user_id bigint,
page_url varchar,
ds date,
country varchar
)
WITH (
format = 'ORC',
partitioning = ARRAY['ds', 'country']
)
建立使用 Iceberg 格式版本 2 的 Iceberg 表格
CREATE TABLE iceberg.web.page_views_v2 (
view_time timestamp,
user_id bigint,
page_url varchar,
ds date,
country varchar
)
WITH (
format = 'ORC',
partitioning = ARRAY['ds', 'country'],
format_version = '2'
)
分割欄轉換¶
除了選取一些特定的欄進行分割之外,您可以使用 transform
函式,並依欄的轉換值來分割表格。
Presto Iceberg 連接器中可用的轉換包括
Bucket
(使用雜湊函式將資料分割成指定數量的儲存貯體)Truncate
(根據欄位截斷的值分割表格,並可以指定截斷值的寬度)Identity
(使用未修改的來源值分割資料)Year
(透過擷取日期或時間戳記年份,以整數值分割資料,以 1970 年起的年份為單位)Month
(透過擷取日期或時間戳記月份,以整數值分割資料,以 1970-01-01 起的月份為單位)Day
(透過擷取日期或時間戳記日期,以整數值分割資料,以 1970-01-01 起的天數為單位)Hour
(透過擷取時間戳記小時,以整數值分割資料,以 1970-01-01 00:00:00 起的小時為單位)
建立一個分割成 8 個大小相等範圍的儲存貯體的 Iceberg 表格
CREATE TABLE players (
id int,
name varchar,
team varchar
)
WITH (
format = 'ORC',
partitioning = ARRAY['bucket(team, 8)']
);
建立一個依 team
欄位的第一個字母分割的 Iceberg 表格
CREATE TABLE players (
id int,
name varchar,
team varchar
)
WITH (
format = 'ORC',
partitioning = ARRAY['truncate(team, 1)']
);
建立一個依 ds
分割的 Iceberg 表格
CREATE TABLE players (
id int,
name varchar,
team varchar,
ds date
)
WITH (
format = 'ORC',
partitioning = ARRAY['year(ds)']
);
建立一個依 ts
分割的 Iceberg 表格
CREATE TABLE players (
id int,
name varchar,
team varchar,
ts timestamp
)
WITH (
format = 'ORC',
partitioning = ARRAY['hour(ts)']
);
CREATE VIEW¶
Iceberg 連接器支援在 Hive 和 Glue 中繼存放區中建立檢視。若要為 CREATE TABLE 範例中建立的 iceberg.web.page_views
表格建立名為 view_page_views
的檢視
CREATE VIEW iceberg.web.view_page_views AS SELECT user_id, country FROM iceberg.web.page_views;
INSERT INTO¶
將資料插入 page_views
表格
INSERT INTO iceberg.web.page_views VALUES(TIMESTAMP '2023-08-12 03:04:05.321', 1, 'https://example.com', current_date, 'country');
CREATE TABLE AS SELECT¶
從現有的表格 page_views
建立新表格 page_views_new
CREATE TABLE iceberg.web.page_views_new AS SELECT * FROM iceberg.web.page_views
SELECT¶
連接器支援 Iceberg 格式版本 1 和版本 2 的 SELECT 表格操作
SELECT * FROM iceberg.web.page_views;
SELECT * FROM iceberg.web.page_views_v2;
具有刪除檔案的表格¶
Iceberg V2 表格支援列級刪除。如需更多資訊,請參閱 Iceberg 表格規格中的 列級刪除。Presto 支援讀取刪除檔案,包括位置刪除檔案和等式刪除檔案。讀取時,Presto 會合併這些刪除檔案以讀取最新的結果。
ALTER TABLE¶
Iceberg 連接器支援變更表格操作
ALTER TABLE iceberg.web.page_views ADD COLUMN zipcode VARCHAR;
ALTER TABLE iceberg.web.page_views RENAME COLUMN zipcode TO location;
ALTER TABLE iceberg.web.page_views DROP COLUMN location;
若要新增欄做為分割欄,請識別欄的轉換函式。表格會依欄的轉換值分割
ALTER TABLE iceberg.web.page_views ADD COLUMN zipcode VARCHAR WITH (partitioning = 'identity');
ALTER TABLE iceberg.web.page_views ADD COLUMN location VARCHAR WITH (partitioning = 'truncate(2)');
ALTER TABLE iceberg.web.page_views ADD COLUMN location VARCHAR WITH (partitioning = 'bucket(8)');
ALTER TABLE iceberg.web.page_views ADD COLUMN dt date WITH (partitioning = 'year');
ALTER TABLE iceberg.web.page_views ADD COLUMN ts timestamp WITH (partitioning = 'month');
ALTER TABLE iceberg.web.page_views ADD COLUMN dt date WITH (partitioning = 'day');
ALTER TABLE iceberg.web.page_views ADD COLUMN ts timestamp WITH (partitioning = 'hour');
TRUNCATE¶
Iceberg 連接器可以使用 TRUNCATE TABLE
從表格中刪除所有資料,而不會從中繼資料目錄中捨棄表格。
TRUNCATE TABLE nation;
TRUNCATE TABLE;
SELECT * FROM nation;
nationkey | name | regionkey | comment
-----------+------+-----------+---------
(0 rows)
DELETE¶
Iceberg 連接器可以使用 DELETE FROM
從表格中刪除資料。例如,若要從表格 lineitem
中刪除
DELETE FROM lineitem;
DELETE FROM lineitem WHERE linenumber = 1;
DELETE FROM lineitem WHERE linenumber not in (1, 3, 5, 7) and linestatus in ('O', 'F');
注意
篩選的欄僅支援比較運算子,例如 EQUALS、LESS THAN 或 LESS THAN EQUALS。
刪除僅能發生在最新的快照上。
對於 V1 表格,Iceberg 連接器只能在一個或多個完整分割區中刪除資料。篩選條件中的欄必須全部是目標表格的身分轉換分割欄。
DROP TABLE¶
捨棄表格 page_views
DROP TABLE iceberg.web.page_views
使用 Hive 中繼存放區和 Glue 目錄捨棄 Iceberg 表格只會從中繼存放區移除中繼資料。
使用 Hadoop 和 Nessie 目錄捨棄 Iceberg 表格會移除表格中的所有資料和中繼資料。
DROP VIEW¶
捨棄檢視 view_page_views
DROP VIEW iceberg.web.view_page_views;
DROP SCHEMA¶
捨棄結構描述 iceberg.web
DROP SCHEMA iceberg.web
SHOW CREATE TABLE¶
使用 SHOW CREATE TABLE
顯示建立指定 Iceberg 表格的 SQL 陳述式。
例如,從已分割的 Iceberg 表格 customer
執行 SHOW CREATE TABLE
SHOW CREATE TABLE customer;
CREATE TABLE iceberg.tpch_iceberg.customer (
"custkey" bigint,
"name" varchar,
"address" varchar,
"nationkey" bigint,
"phone" varchar,
"acctbal" double,
"mktsegment" varchar,
"comment" varchar
)
WITH (
delete_mode = 'copy-on-write',
format = 'PARQUET',
format_version = '2',
location = 's3a://tpch-iceberg/customer',
partitioning = ARRAY['mktsegment']
)
(1 row)
從未分割的 Iceberg 表格 region
執行 SHOW CREATE TABLE
SHOW CREATE TABLE region;
CREATE TABLE iceberg.tpch_iceberg.region (
"regionkey" bigint,
"name" varchar,
"comment" varchar
)
WITH (
delete_mode = 'copy-on-write',
format = 'PARQUET',
format_version = '2',
location = 's3a://tpch-iceberg/region'
)
(1 row)
SHOW COLUMNS¶
使用 SHOW COLUMNS
列出表格中的欄以及其資料類型和其他屬性。
例如,從已分割的 Iceberg 表格 customer
執行 SHOW COLUMNS
SHOW COLUMNS FROM customer;
Column | Type | Extra | Comment
------------+---------+---------------+---------
custkey | bigint | |
name | varchar | |
address | varchar | |
nationkey | bigint | |
phone | varchar | |
acctbal | double | |
mktsegment | varchar | partition key |
comment | varchar | |
(8 rows)
從未分割的 Iceberg 表格 region
執行 SHOW COLUMNS
SHOW COLUMNS FROM region;
Column | Type | Extra | Comment
-----------+---------+-------+---------
regionkey | bigint | |
name | varchar | |
comment | varchar | |
(3 rows)
DESCRIBE¶
使用 DESCRIBE
列出表格中的欄以及其資料類型和其他屬性。DESCRIBE
是 SHOW COLUMNS
的別名。
例如,從已分割的 Iceberg 表格 customer
執行 DESCRIBE
DESCRIBE customer;
Column | Type | Extra | Comment
------------+---------+---------------+---------
custkey | bigint | |
name | varchar | |
address | varchar | |
nationkey | bigint | |
phone | varchar | |
acctbal | double | |
mktsegment | varchar | partition key |
comment | varchar | |
(8 rows)
從未分割的 Iceberg 表格 region
執行 DESCRIBE
DESCRIBE region;
Column | Type | Extra | Comment
-----------+---------+-------+---------
regionkey | bigint | |
name | varchar | |
comment | varchar | |
(3 rows)
結構描述演進¶
Iceberg 和 Presto Iceberg 連接器支援就地表格演進,也稱為結構描述演進,例如新增、捨棄和重新命名欄。透過結構描述演進,使用者可以在啟用 Presto Iceberg 連接器後,使用 SQL 演進表格結構描述。
Parquet 寫入器版本¶
Presto 現在支援 Iceberg 目錄的 Parquet 寫入器版本 V1 和 V2。可以使用工作階段屬性 parquet_writer_version
和組態屬性 hive.parquet.writer.version
切換。這些屬性的有效值為 PARQUET_1_0
和 PARQUET_2_0
。預設值為 PARQUET_1_0
。
範例查詢¶
讓我們建立一個名為 ctas_nation 的 Iceberg 表格,該表格是從 TPCH nation 表格建立的。表格有四個欄:nationkey、name、regionkey 和 comment。
USE iceberg.tpch;
CREATE TABLE IF NOT EXISTS ctas_nation AS (SELECT * FROM nation);
DESCRIBE ctas_nation;
Column | Type | Extra | Comment
-----------+---------+-------+---------
nationkey | bigint | |
name | varchar | |
regionkey | bigint | |
comment | varchar | |
(4 rows)
我們可以簡單地使用 ALTER TABLE 陳述式將新欄新增至 Iceberg 表格。下列查詢會將名為 zipcode 的新欄新增至表格。
ALTER TABLE ctas_nation ADD COLUMN zipcode VARCHAR;
DESCRIBE ctas_nation;
Column | Type | Extra | Comment
-----------+---------+-------+---------
nationkey | bigint | |
name | varchar | |
regionkey | bigint | |
comment | varchar | |
zipcode | varchar | |
(5 rows)
我們也可以將新欄重新命名為另一個名稱 address
ALTER TABLE ctas_nation RENAME COLUMN zipcode TO address;
DESCRIBE ctas_nation;
Column | Type | Extra | Comment
-----------+---------+-------+---------
nationkey | bigint | |
name | varchar | |
regionkey | bigint | |
comment | varchar | |
address | varchar | |
(5 rows)
最後,我們可以刪除新欄。表格欄將還原為原始狀態。
ALTER TABLE ctas_nation DROP COLUMN address;
DESCRIBE ctas_nation;
Column | Type | Extra | Comment
-----------+---------+-------+---------
nationkey | bigint | |
name | varchar | |
regionkey | bigint | |
comment | varchar | |
(4 rows)
時間旅行¶
Iceberg 和 Presto Iceberg 連接器支援透過唯一快照 ID 識別的表格快照進行時間旅行。快照 ID 儲存在 $snapshots
中繼資料表格中。您可以將表格的狀態回溯至先前的快照 ID。它也支援使用 VERSION (SYSTEM_VERSION) 和 TIMESTAMP (SYSTEM_TIME) 選項進行時間旅行查詢。
範例查詢¶
與 結構描述演進 中的範例查詢類似,從 TPCH nation 表格建立一個名為 ctas_nation 的 Iceberg 表格
USE iceberg.tpch;
CREATE TABLE IF NOT EXISTS ctas_nation AS (SELECT * FROM nation);
DESCRIBE ctas_nation;
Column | Type | Extra | Comment
-----------+---------+-------+---------
nationkey | bigint | |
name | varchar | |
regionkey | bigint | |
comment | varchar | |
(4 rows)
我們可以從 $snapshots 中繼資料表格中找到 Iceberg 表格的快照 ID。
SELECT snapshot_id FROM iceberg.tpch."ctas_nation$snapshots" ORDER BY committed_at;
snapshot_id
---------------------
5837462824399906536
(1 row)
目前,由於我們才剛建立表格,因此只有一個快照 ID。讓我們在表格中插入一個資料列,並查看快照 ID 的變更。
INSERT INTO ctas_nation VALUES(25, 'new country', 1, 'comment');
SELECT snapshot_id FROM iceberg.tpch."ctas_nation$snapshots" ORDER BY committed_at;
snapshot_id
---------------------
5837462824399906536
5140039250977437531
(2 rows)
現在,當新資料列插入表格時,會建立一個新的快照 (5140039250977437531)。可以透過執行來驗證新資料列
SELECT * FROM ctas_nation WHERE name = 'new country';
nationkey | name | regionkey | comment
-----------+-------------+-----------+---------
25 | new country | 1 | comment
(1 row)
透過時間旅行功能,我們可以透過呼叫 iceberg.system.rollback_to_snapshot 回溯至沒有新資料列的先前狀態
CALL iceberg.system.rollback_to_snapshot('tpch', 'ctas_nation', 5837462824399906536);
現在,如果我們再次檢查表格,我們會發現由於我們已回溯至先前的狀態,因此新插入的資料列已不再存在。
SELECT * FROM ctas_nation WHERE name = 'new country';
nationkey | name | regionkey | comment
-----------+------+-----------+---------
(0 rows)
使用 VERSION (SYSTEM_VERSION) 和 TIMESTAMP (SYSTEM_TIME) 進行時間旅行¶
使用 Iceberg 連接器存取資料表的歷史資料。您可以查看資料表在特定時間點的狀態,即使資料在那之後已經變更或刪除。
// snapshot ID 5300424205832769799
INSERT INTO ctas_nation VALUES(10, 'united states', 1, 'comment');
// snapshot ID 6891257133877048303
INSERT INTO ctas_nation VALUES(20, 'canada', 2, 'comment');
// snapshot ID 705548372863208787
INSERT INTO ctas_nation VALUES(30, 'mexico', 3, 'comment');
// snapshot ID for first record
SELECT * FROM ctas_nation FOR VERSION AS OF 5300424205832769799;
// snapshot ID for first record using SYSTEM_VERSION
SELECT * FROM ctas_nation FOR SYSTEM_VERSION AS OF 5300424205832769799;
nationkey | name | regionkey | comment
-----------+---------------+-----------+---------
10 | united states | 1 | comment
(1 row)
// snapshot ID for second record using BEFORE clause to retrieve previous state
SELECT * FROM ctas_nation FOR SYSTEM_VERSION BEFORE 6891257133877048303;
nationkey | name | regionkey | comment
-----------+---------------+-----------+---------
10 | united states | 1 | comment
(1 row)
在上述範例中,SYSTEM_VERSION 可以用作 VERSION 的別名。
您可以使用 FOR TIMESTAMP AS OF TIMESTAMP 來存取資料表的歷史資料。查詢會返回最接近指定時間戳記的資料表快照所呈現的資料表狀態。在此範例中,SYSTEM_TIME 可以用作 TIMESTAMP 的別名。
// In following query, timestamp string is matching with second inserted record.
SELECT * FROM ctas_nation FOR TIMESTAMP AS OF TIMESTAMP '2023-10-17 13:29:46.822 America/Los_Angeles';
// Same example using SYSTEM_TIME as an alias for TIMESTAMP
SELECT * FROM ctas_nation FOR SYSTEM_TIME AS OF TIMESTAMP '2023-10-17 13:29:46.822 America/Los_Angeles';
nationkey | name | regionkey | comment
-----------+---------------+-----------+---------
10 | united states | 1 | comment
20 | canada | 2 | comment
(2 rows)
FOR TIMESTAMP AS OF 後面的選項可以接受任何返回帶有時區的時間戳記值的運算式。例如,TIMESTAMP ‘2023-10-17 13:29:46.822 America/Los_Angeles’ 是一個常數字串的運算式。在以下查詢中,運算式 CURRENT_TIMESTAMP 返回目前的帶時區時間戳記值。
SELECT * FROM ctas_nation FOR TIMESTAMP AS OF CURRENT_TIMESTAMP;
nationkey | name | regionkey | comment
-----------+---------------+-----------+---------
10 | united states | 1 | comment
20 | canada | 2 | comment
30 | mexico | 3 | comment
(3 rows)
// In following query, timestamp string is matching with second inserted record.
// BEFORE clause returns first record which is less than timestamp of the second record.
SELECT * FROM ctas_nation FOR TIMESTAMP BEFORE TIMESTAMP '2023-10-17 13:29:46.822 America/Los_Angeles';
nationkey | name | regionkey | comment
-----------+---------------+-----------+---------
10 | united states | 1 | comment
(1 row)
類型映射¶
PrestoDB 和 Iceberg 具有彼此不支援的資料類型。當使用 Iceberg 來讀取或寫入資料時,Presto 會將每個 Iceberg 資料類型變更為對應的 Presto 資料類型,並從每個 Presto 資料類型變更為可比較的 Iceberg 資料類型。下表詳細說明了 PrestoDB 和 Iceberg 之間的具體類型映射。
Iceberg 到 PrestoDB 類型映射¶
Iceberg 類型到相關 PrestoDB 類型的映射
Iceberg 類型 |
PrestoDB 類型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
不支援其他類型。
PrestoDB 到 Iceberg 類型映射¶
PrestoDB 類型到相關 Iceberg 類型的映射
PrestoDB 類型 |
Iceberg 類型 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
不支援其他類型。