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:
java.io.Closeable
,java.lang.AutoCloseable
,Catalog
,SupportsNamespaces
,ViewCatalog
,Configurable<java.lang.Object>
public class NessieCatalog extends BaseMetastoreViewCatalog implements SupportsNamespaces, Configurable<java.lang.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
Constructors Constructor Description NessieCatalog()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
void
createNamespace(Namespace namespace, java.util.Map<java.lang.String,java.lang.String> metadata)
Create a namespace in the catalog.protected java.lang.String
defaultWarehouseLocation(TableIdentifier table)
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(java.lang.String name, java.util.Map<java.lang.String,java.lang.String> options)
Initialize a view catalog given a custom name and a map of catalog properties.void
initialize(java.lang.String name, NessieIcebergClient client, FileIO fileIO, java.util.Map<java.lang.String,java.lang.String> catalogOptions)
An alternative way to initialize the catalog using a pre-configuredNessieIcebergClient
andFileIO
instance.java.util.List<Namespace>
listNamespaces(Namespace namespace)
List child namespaces from the namespace.java.util.List<TableIdentifier>
listTables(Namespace namespace)
Return all the identifiers under this namespace.java.util.List<TableIdentifier>
listViews(Namespace namespace)
Return all the identifiers under this namespace.java.util.Map<java.lang.String,java.lang.String>
loadNamespaceMetadata(Namespace namespace)
Load the given namespace and return its properties.java.lang.String
name()
Return the name for this catalog.protected TableOperations
newTableOps(TableIdentifier tableIdentifier)
protected ViewOperations
newViewOps(TableIdentifier identifier)
protected java.util.Map<java.lang.String,java.lang.String>
properties()
boolean
removeProperties(Namespace namespace, java.util.Set<java.lang.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
setConf(java.lang.Object conf)
boolean
setProperties(Namespace namespace, java.util.Map<java.lang.String,java.lang.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
-
-
-
-
Method Detail
-
initialize
public void initialize(java.lang.String name, java.util.Map<java.lang.String,java.lang.String> options)
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(java.lang.String name, NessieIcebergClient client, FileIO fileIO, java.util.Map<java.lang.String,java.lang.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
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classBaseMetastoreCatalog
- Throws:
java.io.IOException
-
name
public java.lang.String 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
protected TableOperations newTableOps(TableIdentifier tableIdentifier)
- Specified by:
newTableOps
in classBaseMetastoreCatalog
-
defaultWarehouseLocation
protected java.lang.String defaultWarehouseLocation(TableIdentifier table)
- Specified by:
defaultWarehouseLocation
in classBaseMetastoreCatalog
-
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 interfaceCatalog
- 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.
-
renameTable
public void renameTable(TableIdentifier from, TableIdentifier to)
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
public void createNamespace(Namespace namespace, java.util.Map<java.lang.String,java.lang.String> metadata)
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
public java.util.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")
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 java.util.Map<java.lang.String,java.lang.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
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 interfaceSupportsNamespaces
- Parameters:
namespace
- a namespace.Namespace
- Returns:
- true if the namespace was dropped, false otherwise.
- Throws:
NamespaceNotEmptyException
- If the namespace is not empty
-
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 interfaceSupportsNamespaces
- 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 interfaceSupportsNamespaces
- Parameters:
namespace
- a namespace.Namespace
properties
- a collection of metadata to apply to the namespace
-
setConf
public void setConf(java.lang.Object conf)
- Specified by:
setConf
in interfaceConfigurable<java.lang.Object>
-
properties
protected java.util.Map<java.lang.String,java.lang.String> properties()
- Overrides:
properties
in classBaseMetastoreCatalog
-
newViewOps
protected ViewOperations newViewOps(TableIdentifier identifier)
- Specified by:
newViewOps
in classBaseMetastoreViewCatalog
-
listViews
public java.util.List<TableIdentifier> listViews(Namespace namespace)
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
public boolean dropView(TableIdentifier identifier)
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
public void renameView(TableIdentifier from, TableIdentifier to)
Description copied from interface:ViewCatalog
Rename a view.- Specified by:
renameView
in interfaceViewCatalog
- Parameters:
from
- identifier of the view to renameto
- new view identifier
-
-