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 Iceberg Catalog.

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(String catalogName, String defaultDatabase, Namespace baseNamespace, CatalogLoader catalogLoader, boolean cacheEnabled, long cacheExpirationIntervalMs)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    alterDatabase(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, 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)
     
     
    void
     
    void
    createDatabase(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(String databaseName)
     
    void
    dropDatabase(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(String databaseName)
     
    Optional<org.apache.flink.table.factories.Factory>
     
    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)
     
     
     
    List<org.apache.flink.table.catalog.CatalogPartitionSpec>
    listPartitions(org.apache.flink.table.catalog.ObjectPath tablePath)
     
    List<org.apache.flink.table.catalog.CatalogPartitionSpec>
    listPartitions(org.apache.flink.table.catalog.ObjectPath tablePath, org.apache.flink.table.catalog.CatalogPartitionSpec partitionSpec)
     
    List<org.apache.flink.table.catalog.CatalogPartitionSpec>
    listPartitionsByFilter(org.apache.flink.table.catalog.ObjectPath tablePath, List<org.apache.flink.table.expressions.Expression> filters)
     
    listTables(String databaseName)
     
    listViews(String databaseName)
     
    void
     
    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, 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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.flink.table.catalog.Catalog

    bulkGetPartitionColumnStatistics, bulkGetPartitionStatistics, dropDatabase, getFunctionDefinitionFactory, getProcedure, getTable, getTableFactory, listProcedures, supportsManagedTable
  • Constructor Details

    • FlinkCatalog

      public FlinkCatalog(String catalogName, String defaultDatabase, Namespace baseNamespace, CatalogLoader catalogLoader, boolean cacheEnabled, long cacheExpirationIntervalMs)
  • Method Details

    • 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 List<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(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(String databaseName) throws org.apache.flink.table.catalog.exceptions.CatalogException
      Throws:
      org.apache.flink.table.catalog.exceptions.CatalogException
    • createDatabase

      public void createDatabase(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(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(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 List<String> listTables(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, 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 modified
      newTable - the new table definition
      ignoreIfNotExists - 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 exception
      org.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, 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 Optional<org.apache.flink.table.factories.Factory> getFactory()
    • listViews

      public List<String> listViews(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 List<String> listFunctions(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 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 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 List<org.apache.flink.table.catalog.CatalogPartitionSpec> listPartitionsByFilter(org.apache.flink.table.catalog.ObjectPath tablePath, 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