Class DynamoDbCatalog

java.lang.Object
org.apache.iceberg.BaseMetastoreCatalog
org.apache.iceberg.aws.dynamodb.DynamoDbCatalog
All Implemented Interfaces:
Closeable, AutoCloseable, org.apache.hadoop.conf.Configurable, Catalog, SupportsNamespaces

public class DynamoDbCatalog extends BaseMetastoreCatalog implements SupportsNamespaces, org.apache.hadoop.conf.Configurable
DynamoDB implementation of Iceberg catalog
  • Constructor Details Link icon

    • DynamoDbCatalog Link icon

      public DynamoDbCatalog()
  • Method Details Link icon

    • initialize Link icon

      public void initialize(String name, Map<String,String> properties)
      Description copied from interface: Catalog
      Initialize a catalog given a custom name and a map of catalog properties.

      A custom Catalog implementation must have a no-arg constructor. A compute engine like Spark or Flink will first initialize the catalog without any arguments, and then call this method to complete catalog initialization with properties passed into the engine.

      Specified by:
      initialize in interface Catalog
      Parameters:
      name - a custom name for the catalog
      properties - catalog properties
    • name Link icon

      public String name()
      Description copied from interface: Catalog
      Return the name for this catalog.
      Specified by:
      name in interface Catalog
      Returns:
      this catalog's name
    • newTableOps Link icon

      protected TableOperations newTableOps(TableIdentifier tableIdentifier)
      Specified by:
      newTableOps in class BaseMetastoreCatalog
    • defaultWarehouseLocation Link icon

      protected String defaultWarehouseLocation(TableIdentifier tableIdentifier)
      Specified by:
      defaultWarehouseLocation in class BaseMetastoreCatalog
    • createNamespace Link icon

      public void createNamespace(Namespace namespace, Map<String,String> metadata)
      Description copied from interface: SupportsNamespaces
      Create a namespace in the catalog.
      Specified by:
      createNamespace in interface SupportsNamespaces
      Parameters:
      namespace - a multi-part namespace
      metadata - a string Map of properties for the given namespace
    • listNamespaces Link icon

      public List<Namespace> listNamespaces(Namespace namespace) throws NoSuchNamespaceException
      Description copied from interface: SupportsNamespaces
      List child namespaces from the namespace.

      For two existing tables named 'a.b.c.table' and 'a.b.d.table', this method returns:

      • Given: Namespace.empty()
      • Returns: Namespace.of("a")
      • Given: Namespace.of("a")
      • Returns: Namespace.of("a", "b")
      • Given: Namespace.of("a", "b")
      • Returns: Namespace.of("a", "b", "c") and Namespace.of("a", "b", "d")
      • Given: Namespace.of("a", "b", "c")
      • Returns: empty list, because there are no child namespaces
      Specified by:
      listNamespaces in interface SupportsNamespaces
      Returns:
      a List of child Namespace names from the given namespace
      Throws:
      NoSuchNamespaceException - If the namespace does not exist (optional)
    • loadNamespaceMetadata Link icon

      public Map<String,String> loadNamespaceMetadata(Namespace namespace) throws NoSuchNamespaceException
      Description copied from interface: SupportsNamespaces
      Load metadata properties for a namespace.
      Specified by:
      loadNamespaceMetadata in interface SupportsNamespaces
      Parameters:
      namespace - a namespace. Namespace
      Returns:
      a string map of properties for the given namespace
      Throws:
      NoSuchNamespaceException - If the namespace does not exist (optional)
    • dropNamespace Link icon

      public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyException
      Description copied from interface: SupportsNamespaces
      Drop a namespace. If the namespace exists and was dropped, this will return true.
      Specified by:
      dropNamespace in interface SupportsNamespaces
      Parameters:
      namespace - a namespace. Namespace
      Returns:
      true if the namespace was dropped, false otherwise.
      Throws:
      NamespaceNotEmptyException - If the namespace is not empty
    • setProperties Link icon

      public boolean setProperties(Namespace namespace, Map<String,String> properties) throws NoSuchNamespaceException
      Description copied from interface: SupportsNamespaces
      Set a collection of properties on a namespace in the catalog.

      Properties that are not in the given map are not modified or removed by this method.

      Specified by:
      setProperties in interface SupportsNamespaces
      Parameters:
      namespace - a namespace. Namespace
      properties - a collection of metadata to apply to the namespace
      Throws:
      NoSuchNamespaceException - If the namespace does not exist (optional)
    • removeProperties Link icon

      public boolean removeProperties(Namespace namespace, Set<String> properties) throws NoSuchNamespaceException
      Description copied from interface: SupportsNamespaces
      Remove a set of property keys from a namespace in the catalog.

      Properties that are not in the given set are not modified or removed by this method.

      Specified by:
      removeProperties in interface SupportsNamespaces
      Parameters:
      namespace - a namespace. Namespace
      properties - a collection of metadata to apply to the namespace
      Throws:
      NoSuchNamespaceException - If the namespace does not exist (optional)
    • listTables Link icon

      public List<TableIdentifier> listTables(Namespace namespace)
      Description copied from interface: Catalog
      Return all the identifiers under this namespace.
      Specified by:
      listTables in interface Catalog
      Parameters:
      namespace - a namespace
      Returns:
      a list of identifiers for tables
    • dropTable Link icon

      public boolean dropTable(TableIdentifier identifier, boolean purge)
      Description copied from interface: Catalog
      Drop a table; optionally delete data and metadata files.

      If purge is set to true the implementation should delete all data and metadata files.

      Specified by:
      dropTable in interface Catalog
      Parameters:
      identifier - a table identifier
      purge - if true, delete all data and metadata files in the table
      Returns:
      true if the table was dropped, false if the table did not exist
    • renameTable Link icon

      public void renameTable(TableIdentifier from, TableIdentifier to)
      Description copied from interface: Catalog
      Rename a table.
      Specified by:
      renameTable in interface Catalog
      Parameters:
      from - identifier of the table to rename
      to - new table name
    • setConf Link icon

      public void setConf(org.apache.hadoop.conf.Configuration conf)
      Specified by:
      setConf in interface org.apache.hadoop.conf.Configurable
    • getConf Link icon

      public org.apache.hadoop.conf.Configuration getConf()
      Specified by:
      getConf in interface org.apache.hadoop.conf.Configurable
    • close Link icon

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class BaseMetastoreCatalog
      Throws:
      IOException
    • defaultLocationProperty Link icon

      public static String defaultLocationProperty()
      The property used to set a default location for tables in a namespace. Call setProperties(Namespace, Map) to set a path value using this property for a namespace, then all tables in the namespace will have default table root path under that given path.
      Returns:
      default location property key
    • properties Link icon

      protected Map<String,String> properties()
      Overrides:
      properties in class BaseMetastoreCatalog