Package org.apache.iceberg.nessie
Class NessieCatalog
java.lang.Object
org.apache.iceberg.BaseMetastoreCatalog
org.apache.iceberg.view.BaseMetastoreViewCatalog
org.apache.iceberg.nessie.NessieCatalog
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Catalog
,SupportsNamespaces
,ViewCatalog
,Configurable<Object>
public class NessieCatalog
extends BaseMetastoreViewCatalog
implements SupportsNamespaces, Configurable<Object>
Nessie implementation of Iceberg Catalog.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.iceberg.view.BaseMetastoreViewCatalog
BaseMetastoreViewCatalog.BaseMetastoreViewCatalogTableBuilder, BaseMetastoreViewCatalog.BaseViewBuilder
Nested classes/interfaces inherited from class org.apache.iceberg.BaseMetastoreCatalog
BaseMetastoreCatalog.BaseMetastoreCatalogTableBuilder
Nested classes/interfaces inherited from interface org.apache.iceberg.catalog.Catalog
Catalog.TableBuilder
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
void
createNamespace
(Namespace namespace, Map<String, String> metadata) Create a namespace in the catalog.protected String
boolean
dropNamespace
(Namespace namespace) Drop a namespace.boolean
dropTable
(TableIdentifier identifier, boolean purge) Drop a table; optionally delete data and metadata files.boolean
dropView
(TableIdentifier identifier) Drop a view.void
initialize
(String name, Map<String, String> options) Initialize a view catalog given a custom name and a map of catalog properties.void
initialize
(String name, NessieIcebergClient client, FileIO fileIO, Map<String, String> catalogOptions) An alternative way to initialize the catalog using a pre-configuredNessieIcebergClient
andFileIO
instance.listNamespaces
(Namespace namespace) List child namespaces from the namespace.listTables
(Namespace namespace) Return all the identifiers under this namespace.Return all the identifiers under this namespace.loadNamespaceMetadata
(Namespace namespace) Load the given namespace and return its properties.name()
Return the name for this catalog.protected TableOperations
newTableOps
(TableIdentifier tableIdentifier) protected ViewOperations
newViewOps
(TableIdentifier identifier) boolean
removeProperties
(Namespace namespace, Set<String> properties) Remove a set of property keys from a namespace in the catalog.void
renameTable
(TableIdentifier from, TableIdentifier to) Rename a table.void
renameView
(TableIdentifier from, TableIdentifier to) Rename a view.void
boolean
setProperties
(Namespace namespace, Map<String, String> properties) Set a collection of properties on a namespace in the catalog.Methods inherited from class org.apache.iceberg.view.BaseMetastoreViewCatalog
buildTable, buildView, loadView
Methods inherited from class org.apache.iceberg.BaseMetastoreCatalog
fullTableName, isValidIdentifier, loadTable, metricsReporter, registerTable, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.iceberg.catalog.Catalog
createTable, createTable, createTable, createTable, dropTable, invalidateTable, newCreateTableTransaction, newCreateTableTransaction, newCreateTableTransaction, newCreateTableTransaction, newReplaceTableTransaction, newReplaceTableTransaction, newReplaceTableTransaction, newReplaceTableTransaction, tableExists
Methods inherited from interface org.apache.iceberg.catalog.SupportsNamespaces
createNamespace, listNamespaces, namespaceExists
Methods inherited from interface org.apache.iceberg.catalog.ViewCatalog
invalidateView, viewExists
-
Constructor Details
-
NessieCatalog
public NessieCatalog()
-
-
Method Details
-
initialize
Description copied from interface:ViewCatalog
Initialize a view catalog given a custom name and a map of catalog properties.A custom view 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 interfaceCatalog
- Specified by:
initialize
in interfaceViewCatalog
- Overrides:
initialize
in classBaseMetastoreViewCatalog
- Parameters:
name
- a custom name for the catalogoptions
- catalog properties
-
initialize
public void initialize(String name, NessieIcebergClient client, FileIO fileIO, Map<String, String> catalogOptions) An alternative way to initialize the catalog using a pre-configuredNessieIcebergClient
andFileIO
instance.- Parameters:
name
- The name of the catalog, defaults to "nessie" ifnull
client
- The pre-configuredNessieIcebergClient
instance to usefileIO
- TheFileIO
instance to usecatalogOptions
- The catalog options to use
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classBaseMetastoreCatalog
- Throws:
IOException
-
name
Description copied from interface:ViewCatalog
Return the name for this catalog.- Specified by:
name
in interfaceCatalog
- Specified by:
name
in interfaceViewCatalog
- Overrides:
name
in classBaseMetastoreViewCatalog
- Returns:
- this catalog's name
-
newTableOps
- Specified by:
newTableOps
in classBaseMetastoreCatalog
-
defaultWarehouseLocation
- Specified by:
defaultWarehouseLocation
in classBaseMetastoreCatalog
-
listTables
Description copied from interface:Catalog
Return all the identifiers under this namespace.- Specified by:
listTables
in interfaceCatalog
- Parameters:
namespace
- a namespace- Returns:
- a list of identifiers for tables
-
dropTable
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.
-
renameTable
Description copied from interface:Catalog
Rename a table.- Specified by:
renameTable
in interfaceCatalog
- Parameters:
from
- identifier of the table to renameto
- new table name
-
createNamespace
Description copied from interface:SupportsNamespaces
Create a namespace in the catalog.- Specified by:
createNamespace
in interfaceSupportsNamespaces
- Parameters:
namespace
- a multi-part namespacemetadata
- a string Map of properties for the given namespace
-
listNamespaces
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")
andNamespace.of("a", "b", "d")
- Given:
Namespace.of("a", "b", "c")
- Returns: empty list, because there are no child namespaces
- Specified by:
listNamespaces
in interfaceSupportsNamespaces
- Returns:
- a List of child
Namespace
names from the given namespace - Throws:
NoSuchNamespaceException
- If the namespace does not exist (optional)
- Given:
-
loadNamespaceMetadata
public Map<String,String> loadNamespaceMetadata(Namespace namespace) throws NoSuchNamespaceException Load the given namespace and return its properties.- Specified by:
loadNamespaceMetadata
in interfaceSupportsNamespaces
- Parameters:
namespace
- a namespace.Namespace
- Returns:
- a string map of properties for the given namespace
- Throws:
NoSuchNamespaceException
- If the namespace does not exist
-
dropNamespace
Description copied from interface:SupportsNamespaces
Drop a namespace. If the namespace exists and was dropped, this will return true.- Specified by:
dropNamespace
in interfaceSupportsNamespaces
- Parameters:
namespace
- a namespace.Namespace
- Returns:
- true if the namespace was dropped, false otherwise.
- Throws:
NamespaceNotEmptyException
- If the namespace is not empty
-
setProperties
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 interfaceSupportsNamespaces
- Parameters:
namespace
- a namespace.Namespace
properties
- a collection of metadata to apply to the namespace
-
removeProperties
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 interfaceSupportsNamespaces
- Parameters:
namespace
- a namespace.Namespace
properties
- a collection of metadata to apply to the namespace
-
setConf
- Specified by:
setConf
in interfaceConfigurable<Object>
-
properties
- Overrides:
properties
in classBaseMetastoreCatalog
-
newViewOps
- Specified by:
newViewOps
in classBaseMetastoreViewCatalog
-
listViews
Description copied from interface:ViewCatalog
Return all the identifiers under this namespace.- Specified by:
listViews
in interfaceViewCatalog
- Parameters:
namespace
- a namespace- Returns:
- a list of identifiers for views
-
dropView
Description copied from interface:ViewCatalog
Drop a view.- Specified by:
dropView
in interfaceViewCatalog
- Parameters:
identifier
- a view identifier- Returns:
- true if the view was dropped, false if the view did not exist
-
renameView
Description copied from interface:ViewCatalog
Rename a view.- Specified by:
renameView
in interfaceViewCatalog
- Parameters:
from
- identifier of the view to renameto
- new view identifier
-