Package org.apache.iceberg.flink
Class FlinkCatalog
- java.lang.Object
-
- org.apache.flink.table.catalog.AbstractCatalog
-
- org.apache.iceberg.flink.FlinkCatalog
-
- All Implemented Interfaces:
org.apache.flink.table.catalog.Catalog
public class FlinkCatalog extends org.apache.flink.table.catalog.AbstractCatalog
A Flink Catalog implementation that wraps an IcebergCatalog
.The mapping between Flink database and Iceberg namespace: Supplying a base namespace for a given catalog, so if you have a catalog that supports a 2-level namespace, you would supply the first level in the catalog configuration and the second level would be exposed as Flink databases.
The Iceberg table manages its partitions by itself. The partition of the Iceberg table is independent of the partition of Flink.
-
-
Constructor Summary
Constructors Constructor Description FlinkCatalog(java.lang.String catalogName, java.lang.String defaultDatabase, Namespace baseNamespace, CatalogLoader catalogLoader, boolean cacheEnabled, long cacheExpirationIntervalMs)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
alterDatabase(java.lang.String name, org.apache.flink.table.catalog.CatalogDatabase newDatabase, boolean ignoreIfNotExists)
void
alterFunction(org.apache.flink.table.catalog.ObjectPath functionPath, org.apache.flink.table.catalog.CatalogFunction newFunction, boolean ignoreIfNotExists)
void
alterPartition(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.CatalogPartition newPartition, boolean ignoreIfNotExists)
void
alterPartitionColumnStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.stats.CatalogColumnStatistics columnStatistics, boolean ignoreIfNotExists)
void
alterPartitionStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.stats.CatalogTableStatistics partitionStatistics, boolean ignoreIfNotExists)
void
alterTable(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogBaseTable newTable, boolean ignoreIfNotExists)
This alterTable API only supports altering table properties.void
alterTable(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogBaseTable newTable, java.util.List<org.apache.flink.table.catalog.TableChange> tableChanges, boolean ignoreIfNotExists)
void
alterTableColumnStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.stats.CatalogColumnStatistics columnStatistics, boolean ignoreIfNotExists)
void
alterTableStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.stats.CatalogTableStatistics tableStatistics, boolean ignoreIfNotExists)
Catalog
catalog()
void
close()
void
createDatabase(java.lang.String name, org.apache.flink.table.catalog.CatalogDatabase database, boolean ignoreIfExists)
void
createFunction(org.apache.flink.table.catalog.ObjectPath functionPath, org.apache.flink.table.catalog.CatalogFunction function, boolean ignoreIfExists)
void
createPartition(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.CatalogPartition partition, boolean ignoreIfExists)
void
createTable(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogBaseTable table, boolean ignoreIfExists)
boolean
databaseExists(java.lang.String databaseName)
void
dropDatabase(java.lang.String name, boolean ignoreIfNotExists, boolean cascade)
void
dropFunction(org.apache.flink.table.catalog.ObjectPath functionPath, boolean ignoreIfNotExists)
void
dropPartition(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, boolean ignoreIfNotExists)
void
dropTable(org.apache.flink.table.catalog.ObjectPath tablePath, boolean ignoreIfNotExists)
boolean
functionExists(org.apache.flink.table.catalog.ObjectPath functionPath)
org.apache.flink.table.catalog.CatalogDatabase
getDatabase(java.lang.String databaseName)
java.util.Optional<org.apache.flink.table.factories.Factory>
getFactory()
org.apache.flink.table.catalog.CatalogFunction
getFunction(org.apache.flink.table.catalog.ObjectPath functionPath)
org.apache.flink.table.catalog.CatalogPartition
getPartition(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)
org.apache.flink.table.catalog.stats.CatalogColumnStatistics
getPartitionColumnStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)
org.apache.flink.table.catalog.stats.CatalogTableStatistics
getPartitionStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)
org.apache.flink.table.catalog.CatalogTable
getTable(org.apache.flink.table.catalog.ObjectPath tablePath)
org.apache.flink.table.catalog.stats.CatalogColumnStatistics
getTableColumnStatistics(org.apache.flink.table.catalog.ObjectPath tablePath)
org.apache.flink.table.catalog.stats.CatalogTableStatistics
getTableStatistics(org.apache.flink.table.catalog.ObjectPath tablePath)
java.util.List<java.lang.String>
listDatabases()
java.util.List<java.lang.String>
listFunctions(java.lang.String dbName)
java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec>
listPartitions(org.apache.flink.table.catalog.ObjectPath tablePath)
java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec>
listPartitions(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)
java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec>
listPartitionsByFilter(org.apache.flink.table.catalog.ObjectPath tablePath, java.util.List<org.apache.flink.table.expressions.Expression> filters)
java.util.List<java.lang.String>
listTables(java.lang.String databaseName)
java.util.List<java.lang.String>
listViews(java.lang.String databaseName)
void
open()
boolean
partitionExists(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)
void
renameTable(org.apache.flink.table.catalog.ObjectPath tablePath, java.lang.String newTableName, boolean ignoreIfNotExists)
boolean
tableExists(org.apache.flink.table.catalog.ObjectPath tablePath)
-
Methods inherited from class org.apache.flink.table.catalog.AbstractCatalog
getDefaultDatabase, getName
-
-
-
-
Constructor Detail
-
FlinkCatalog
public FlinkCatalog(java.lang.String catalogName, java.lang.String defaultDatabase, Namespace baseNamespace, CatalogLoader catalogLoader, boolean cacheEnabled, long cacheExpirationIntervalMs)
-
-
Method Detail
-
open
public void open() throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
close
public void close() throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
catalog
public Catalog catalog()
-
listDatabases
public java.util.List<java.lang.String> listDatabases() throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
getDatabase
public org.apache.flink.table.catalog.CatalogDatabase getDatabase(java.lang.String databaseName) throws org.apache.flink.table.catalog.exceptions.DatabaseNotExistException, org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.DatabaseNotExistException
org.apache.flink.table.catalog.exceptions.CatalogException
-
databaseExists
public boolean databaseExists(java.lang.String databaseName) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
createDatabase
public void createDatabase(java.lang.String name, org.apache.flink.table.catalog.CatalogDatabase database, boolean ignoreIfExists) throws org.apache.flink.table.catalog.exceptions.DatabaseAlreadyExistException, org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.DatabaseAlreadyExistException
org.apache.flink.table.catalog.exceptions.CatalogException
-
dropDatabase
public void dropDatabase(java.lang.String name, boolean ignoreIfNotExists, boolean cascade) throws org.apache.flink.table.catalog.exceptions.DatabaseNotExistException, org.apache.flink.table.catalog.exceptions.DatabaseNotEmptyException, org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.DatabaseNotExistException
org.apache.flink.table.catalog.exceptions.DatabaseNotEmptyException
org.apache.flink.table.catalog.exceptions.CatalogException
-
alterDatabase
public void alterDatabase(java.lang.String name, org.apache.flink.table.catalog.CatalogDatabase newDatabase, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.DatabaseNotExistException, org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.DatabaseNotExistException
org.apache.flink.table.catalog.exceptions.CatalogException
-
listTables
public java.util.List<java.lang.String> listTables(java.lang.String databaseName) throws org.apache.flink.table.catalog.exceptions.DatabaseNotExistException, org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.DatabaseNotExistException
org.apache.flink.table.catalog.exceptions.CatalogException
-
getTable
public org.apache.flink.table.catalog.CatalogTable getTable(org.apache.flink.table.catalog.ObjectPath tablePath) throws org.apache.flink.table.catalog.exceptions.TableNotExistException, org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.TableNotExistException
org.apache.flink.table.catalog.exceptions.CatalogException
-
tableExists
public boolean tableExists(org.apache.flink.table.catalog.ObjectPath tablePath) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
dropTable
public void dropTable(org.apache.flink.table.catalog.ObjectPath tablePath, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.TableNotExistException, org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.TableNotExistException
org.apache.flink.table.catalog.exceptions.CatalogException
-
renameTable
public void renameTable(org.apache.flink.table.catalog.ObjectPath tablePath, java.lang.String newTableName, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.TableNotExistException, org.apache.flink.table.catalog.exceptions.TableAlreadyExistException, org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.TableNotExistException
org.apache.flink.table.catalog.exceptions.TableAlreadyExistException
org.apache.flink.table.catalog.exceptions.CatalogException
-
createTable
public void createTable(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogBaseTable table, boolean ignoreIfExists) throws org.apache.flink.table.catalog.exceptions.CatalogException, org.apache.flink.table.catalog.exceptions.TableAlreadyExistException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
org.apache.flink.table.catalog.exceptions.TableAlreadyExistException
-
alterTable
public void alterTable(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogBaseTable newTable, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.CatalogException, org.apache.flink.table.catalog.exceptions.TableNotExistException
This alterTable API only supports altering table properties.Support for adding/removing/renaming columns cannot be done by comparing CatalogTable instances, unless the Flink schema contains Iceberg column IDs.
To alter columns, use the other alterTable API and provide a list of TableChange's.
- Parameters:
tablePath
- path of the table or view to be modifiednewTable
- the new table definitionignoreIfNotExists
- flag to specify behavior when the table or view does not exist: if set to false, throw an exception, if set to true, do nothing.- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
- in case of any runtime exceptionorg.apache.flink.table.catalog.exceptions.TableNotExistException
- if the table does not exist
-
alterTable
public void alterTable(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogBaseTable newTable, java.util.List<org.apache.flink.table.catalog.TableChange> tableChanges, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.TableNotExistException, org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.TableNotExistException
org.apache.flink.table.catalog.exceptions.CatalogException
-
getFactory
public java.util.Optional<org.apache.flink.table.factories.Factory> getFactory()
-
listViews
public java.util.List<java.lang.String> listViews(java.lang.String databaseName) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
getPartition
public org.apache.flink.table.catalog.CatalogPartition getPartition(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
partitionExists
public boolean partitionExists(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
createPartition
public void createPartition(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.CatalogPartition partition, boolean ignoreIfExists) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
dropPartition
public void dropPartition(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
alterPartition
public void alterPartition(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.CatalogPartition newPartition, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
listFunctions
public java.util.List<java.lang.String> listFunctions(java.lang.String dbName) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
getFunction
public org.apache.flink.table.catalog.CatalogFunction getFunction(org.apache.flink.table.catalog.ObjectPath functionPath) throws org.apache.flink.table.catalog.exceptions.FunctionNotExistException, org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.FunctionNotExistException
org.apache.flink.table.catalog.exceptions.CatalogException
-
functionExists
public boolean functionExists(org.apache.flink.table.catalog.ObjectPath functionPath) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
createFunction
public void createFunction(org.apache.flink.table.catalog.ObjectPath functionPath, org.apache.flink.table.catalog.CatalogFunction function, boolean ignoreIfExists) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
alterFunction
public void alterFunction(org.apache.flink.table.catalog.ObjectPath functionPath, org.apache.flink.table.catalog.CatalogFunction newFunction, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
dropFunction
public void dropFunction(org.apache.flink.table.catalog.ObjectPath functionPath, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
alterTableStatistics
public void alterTableStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.stats.CatalogTableStatistics tableStatistics, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
alterTableColumnStatistics
public void alterTableColumnStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.stats.CatalogColumnStatistics columnStatistics, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
alterPartitionStatistics
public void alterPartitionStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.stats.CatalogTableStatistics partitionStatistics, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
alterPartitionColumnStatistics
public void alterPartitionColumnStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec, org.apache.flink.table.catalog.stats.CatalogColumnStatistics columnStatistics, boolean ignoreIfNotExists) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
listPartitions
public java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec> listPartitions(org.apache.flink.table.catalog.ObjectPath tablePath) throws org.apache.flink.table.catalog.exceptions.TableNotExistException, org.apache.flink.table.catalog.exceptions.TableNotPartitionedException, org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.TableNotExistException
org.apache.flink.table.catalog.exceptions.TableNotPartitionedException
org.apache.flink.table.catalog.exceptions.CatalogException
-
listPartitions
public java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec> listPartitions(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
listPartitionsByFilter
public java.util.List<org.apache.flink.table.catalog.CatalogPartitionSpec> listPartitionsByFilter(org.apache.flink.table.catalog.ObjectPath tablePath, java.util.List<org.apache.flink.table.expressions.Expression> filters) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
getTableStatistics
public org.apache.flink.table.catalog.stats.CatalogTableStatistics getTableStatistics(org.apache.flink.table.catalog.ObjectPath tablePath) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
getTableColumnStatistics
public org.apache.flink.table.catalog.stats.CatalogColumnStatistics getTableColumnStatistics(org.apache.flink.table.catalog.ObjectPath tablePath) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
getPartitionStatistics
public org.apache.flink.table.catalog.stats.CatalogTableStatistics getPartitionStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
getPartitionColumnStatistics
public org.apache.flink.table.catalog.stats.CatalogColumnStatistics getPartitionColumnStatistics(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec) throws org.apache.flink.table.catalog.exceptions.CatalogException
- Throws:
org.apache.flink.table.catalog.exceptions.CatalogException
-
-