Class NessieCatalog

  • All Implemented Interfaces:
    java.lang.AutoCloseable, org.apache.hadoop.conf.Configurable, Catalog, SupportsNamespaces

    public class NessieCatalog
    extends BaseMetastoreCatalog
    implements java.lang.AutoCloseable, SupportsNamespaces, org.apache.hadoop.conf.Configurable
    Nessie implementation of Iceberg Catalog.

    A note on namespaces: Nessie namespaces are implicit and do not need to be explicitly created or deleted. The create and delete namespace methods are no-ops for the NessieCatalog. One can still list namespaces that have objects stored in them to assist with namespace-centric catalog exploration.

    • Constructor Detail

      • NessieCatalog

        public NessieCatalog()
    • Method Detail

      • initialize

        public void initialize​(java.lang.String inputName,
                               java.util.Map<java.lang.String,​java.lang.String> options)
        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:
        inputName - a custom name for the catalog
        options - catalog properties
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
      • name

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

        public java.util.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

        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

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

        public void createNamespace​(Namespace namespace,
                                    java.util.Map<java.lang.String,​java.lang.String> metadata)
        creating namespaces in nessie is implicit, therefore this is a no-op. Metadata is ignored.
        Specified by:
        createNamespace in interface SupportsNamespaces
        Parameters:
        namespace - a multi-part namespace
        metadata - a string Map of properties for the given namespace
      • dropNamespace

        public boolean dropNamespace​(Namespace namespace)
        Namespaces in Nessie are implicit and therefore cannot be dropped
        Specified by:
        dropNamespace in interface SupportsNamespaces
        Parameters:
        namespace - The Namespace to drop.
        Returns:
        true if the namespace was dropped, false otherwise.
        Throws:
        java.lang.UnsupportedOperationException - Namespaces in Nessie are implicit and thus cannot be dropped.
      • setProperties

        public boolean setProperties​(Namespace namespace,
                                     java.util.Map<java.lang.String,​java.lang.String> properties)
        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
      • removeProperties

        public boolean removeProperties​(Namespace namespace,
                                        java.util.Set<java.lang.String> properties)
        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
      • setConf

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

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

        public void refresh()
                     throws org.projectnessie.error.NessieNotFoundException
        Throws:
        org.projectnessie.error.NessieNotFoundException
      • currentHash

        public java.lang.String currentHash()