Back to Iceberg

Implementation Status

site/docs/status.md

latest15.9 KB
Original Source
<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -->

Implementation Status

Apache Iceberg's table specification is implemented in multiple languages. This page provides an overview of the current capabilities.

Libraries

This section lists the libraries that implement the Apache Iceberg specification.

Data Types

Data TypeJavaPyIcebergRustGoC++
booleanYYYYY
intYYYYY
longYYYYY
floatYYYYY
doubleYYYYY
decimalYYYYY
dateYYYYY
timeYYYYY
timestampYYYYY
timestamptzYYYYY
timestamp_nsYYYYN
timestamptz_nsYYYYN
stringYYYYY
uuidYYYYN
fixedYYYYY
binaryYYYYY
variantYYYYN
listYYYYY
mapYYYYY
structYYYYY

Data File Formats

FormatJavaPyIcebergRustGoC++
ParquetYYYYY
ORCYNNNN
PuffinYNNNN
AvroYNNNY

File IO

StorageJavaPyIcebergRustGoC++
Local FilesystemYYYYY
Hadoop FilesystemYYYYN
S3 CompatibleYYYYN
GCS CompatibleYYYYN
ADLS CompatibleYYYYN

Table Maintenance Operations

Table Spec V1

OperationJavaPyIcebergRustGoC++
Update schemaYYYNY
Update partition specYYYNY
Update table propertiesYYYYY
Replace sort orderYNNNY
Update table locationYYNNY
Update statisticsYYNNY
Update partition statisticsYNNNN
Expire snapshotsYNNNN
Manage snapshotsYNNNN

Table Spec V2

OperationJavaPyIcebergRustGoC++
Update schemaYYNNY
Update partition specYYNNY
Update table propertiesYYYYY
Replace sort orderYNNNY
Update table locationYYNNY
Update statisticsYYNNY
Update partition statisticsYNNNN
Expire snapshotsYNNNN
Manage snapshotsYNNNN

Table Update Operations

Table Spec V1

OperationJavaPyIcebergRustGoC++
Append data filesYYNYY
Rewrite filesYYNNN
Rewrite manifestsYYNYN
Overwrite filesYYNNN
Delete filesYYNNN

Table Spec V2

OperationJavaPyIcebergRustGoC++
Append data filesYYNYY
Rewrite filesYYNNN
Rewrite manifestsYYNYN
Overwrite filesYYNNN
Row deltaYNNNN
Delete filesYYNNN

Table Read Operations

Table Spec V1

OperationJavaPyIcebergRustGoC++
Plan with data fileYYYYY
Plan with puffin statisticsYYYYN
Read data fileYNYYY

Table Spec V2

OperationJavaPyIcebergRustGoC++
Plan with data fileYYYYY
Plan with position deletesYYNYY
Plan with equality deletesYYNNY
Plan with puffin statisticsYNNNN
Read data fileYYYYY
Read with position deletesYYNYN
Read with equality deletesYNNNN

Table Write Operations

Table Spec V1

OperationJavaPyIcebergRustGoC++
Append dataYYYYN

Table Spec V2

OperationJavaPyIcebergRustGoC++
Append dataYYYYN
Write position deletesYNNNN
Write equality deletesYNNNN

Catalogs

Rest Catalog

Table Spec V1

Table OperationJavaPyIcebergRustGoC++
listTableYYYYY
createTableYYYYY
dropTableYYYYY
loadTableYYYYY
updateTableYYYYY
renameTableYYYYY
tableExistsYYYYY

Table Spec V2

Table OperationJavaPyIcebergRustGoC++
listTableYYYYY
createTableYYYYY
dropTableYYYYY
loadTableYYYYY
updateTableYYYYY
renameTableYYYYY
tableExistsYYYYY

View Spec V1

View OperationJavaPyIcebergRustGoC++
createViewYNNNN
dropViewYYNNN
listViewYYNNN
viewExistsYYNNN
replaceViewYNNNN
renameViewYNNNN

Namespace Operations

Namespace OperationJavaPyIcebergRustGoC++
listNamespacesYYYYY
createNamespaceYYYYY
dropNamespaceYYYYY
namespaceExistsYYYYY
updateNamespacePropertiesYYYYY
loadNamespaceMetadataYYYYY

Sql Catalog

The sql catalog is a catalog backed by a sql database, which is called jdbc catalog in java.

DatabaseJavaPyIcebergRustGoC++
PostgresYYYYN
MySQLYYYYN
SQLiteYYYYN

Table Spec V1

Table OperationJavaPyIcebergRustGoC++
listTableYYYYN
createTableYYYYN
dropTableYYYYN
loadTableYYYYN
updateTableYYYYN
renameTableYYYYN
tableExistsYYYYN

Table Spec V2

Table OperationJavaPyIcebergRustGoC++
listTableYYYYN
createTableYYYYN
dropTableYYYYN
loadTableYYYYN
updateTableYYYYN
renameTableYYYYN
tableExistsYYYYN

View Spec V1

View OperationJavaPyIcebergRustGoC++
createViewYNNNN
dropViewYNNNN
listViewYNNNN
viewExistsYNNNN
replaceViewYNNNN
renameViewYNNNN

Namespace Operations

Namespace OperationJavaPyIcebergRustGoC++
listNamespacesYYNYN
createNamespaceYYNYN
dropNamespaceYYYYN
namespaceExistsYNNYN
updateNamespacePropertiesYYYYN
loadNamespaceMetadataYYNYN

Glue Catalog

Table Spec V1

Table OperationJavaPyIcebergRustGoC++
listTableYYYYN
createTableYYYYN
dropTableYYYYN
loadTableYYYYN
updateTableYYYYN
renameTableYYYYN
tableExistsYYYYN

Table Spec V2

Table OperationJavaPyIcebergRustGoC++
listTableYYYYN
createTableYYYYN
dropTableYYYYN
loadTableYYYYN
updateTableYYYYN
renameTableYYYYN
tableExistsYYYYN

View Spec V1

View OperationJavaPyIcebergRustGoC++
createViewYNNNN
dropViewYNNNN
listViewYNNNN
viewExistsYNNNN
replaceViewYNNNN
renameViewYNNNN

Namespace Operations

Namespace OperationJavaPyIcebergRustGoC++
listNamespacesYYNYN
createNamespaceYYNYN
dropNamespaceYYNYN
namespaceExistsYNNYN
updateNamespacePropertiesYYYYN
loadNamespaceMetadataYYNYN

Hive Metastore Catalog

Table Spec V1

Table OperationJavaPyIcebergRustGoC++
listTableYYYYN
createTableYYYYN
dropTableYYYYN
loadTableYYYYN
updateTableYYYYN
renameTableYYYYN
tableExistsYYYYN

Table Spec V2

Table OperationJavaPyIcebergRustGoC++
listTableYYYYN
createTableYYYYN
dropTableYYYYN
loadTableYYYYN
updateTableYYYYN
renameTableYYYYN
tableExistsYYYYN

View Spec V1

View OperationJavaPyIcebergRustGoC++
createViewYNNNN
dropViewYNNNN
listViewYNNNN
viewExistsYNNNN
replaceViewYNNNN
renameViewYNNNN

Namespace Operations

Namespace OperationJavaPyIcebergRustGoC++
listNamespacesYYNNN
createNamespaceYYNNN
dropNamespaceYYNNN
namespaceExistsYNNNN
updateNamespacePropertiesYYYYN
loadNamespaceMetadataYYNNN