Class InMemoryCatalog
- java.lang.Object
-
- org.apache.iceberg.BaseMetastoreCatalog
-
- org.apache.iceberg.view.BaseMetastoreViewCatalog
-
- org.apache.iceberg.inmemory.InMemoryCatalog
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,Catalog,SupportsNamespaces,ViewCatalog
public class InMemoryCatalog extends BaseMetastoreViewCatalog implements SupportsNamespaces, java.io.Closeable
Catalog implementation that uses in-memory data-structures to store the namespaces and tables. This class doesn't touch external resources and can be utilized to write unit tests without side effects. It usesInMemoryFileIO.
-
-
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 InMemoryCatalog()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()voidcreateNamespace(Namespace namespace)Create a namespace in the catalog.voidcreateNamespace(Namespace namespace, java.util.Map<java.lang.String,java.lang.String> metadata)Create a namespace in the catalog.protected java.lang.StringdefaultWarehouseLocation(TableIdentifier tableIdentifier)booleandropNamespace(Namespace namespace)Drop a namespace.booleandropTable(TableIdentifier tableIdentifier, boolean purge)Drop a table; optionally delete data and metadata files.booleandropView(TableIdentifier identifier)Drop a view.voidinitialize(java.lang.String name, java.util.Map<java.lang.String,java.lang.String> properties)Initialize a view catalog given a custom name and a map of catalog properties.java.util.List<Namespace>listNamespaces()List top-level namespaces from the catalog.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 metadata properties for a namespace.java.lang.Stringname()Return the name for this catalog.booleannamespaceExists(Namespace namespace)Checks whether the Namespace exists.protected TableOperationsnewTableOps(TableIdentifier tableIdentifier)protected org.apache.iceberg.inmemory.InMemoryCatalog.InMemoryViewOperationsnewViewOps(TableIdentifier identifier)booleanremoveProperties(Namespace namespace, java.util.Set<java.lang.String> properties)Remove a set of property keys from a namespace in the catalog.voidrenameTable(TableIdentifier from, TableIdentifier to)Rename a table.voidrenameView(TableIdentifier from, TableIdentifier to)Rename a view.booleansetProperties(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, properties, 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.ViewCatalog
invalidateView, viewExists
-
-
-
-
Method Detail
-
name
public java.lang.String name()
Description copied from interface:ViewCatalogReturn the name for this catalog.- Specified by:
namein interfaceCatalog- Specified by:
namein interfaceViewCatalog- Overrides:
namein classBaseMetastoreViewCatalog- Returns:
- this catalog's name
-
initialize
public void initialize(java.lang.String name, java.util.Map<java.lang.String,java.lang.String> properties)Description copied from interface:ViewCatalogInitialize 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:
initializein interfaceCatalog- Specified by:
initializein interfaceViewCatalog- Overrides:
initializein classBaseMetastoreViewCatalog- Parameters:
name- a custom name for the catalogproperties- catalog properties
-
newTableOps
protected TableOperations newTableOps(TableIdentifier tableIdentifier)
- Specified by:
newTableOpsin classBaseMetastoreCatalog
-
defaultWarehouseLocation
protected java.lang.String defaultWarehouseLocation(TableIdentifier tableIdentifier)
- Specified by:
defaultWarehouseLocationin classBaseMetastoreCatalog
-
dropTable
public boolean dropTable(TableIdentifier tableIdentifier, boolean purge)
Description copied from interface:CatalogDrop a table; optionally delete data and metadata files.If purge is set to true the implementation should delete all data and metadata files.
-
listTables
public java.util.List<TableIdentifier> listTables(Namespace namespace)
Description copied from interface:CatalogReturn all the identifiers under this namespace.- Specified by:
listTablesin interfaceCatalog- Parameters:
namespace- a namespace- Returns:
- a list of identifiers for tables
-
renameTable
public void renameTable(TableIdentifier from, TableIdentifier to)
Description copied from interface:CatalogRename a table.- Specified by:
renameTablein interfaceCatalog- Parameters:
from- identifier of the table to renameto- new table name
-
createNamespace
public void createNamespace(Namespace namespace)
Description copied from interface:SupportsNamespacesCreate a namespace in the catalog.- Specified by:
createNamespacein interfaceSupportsNamespaces- Parameters:
namespace- a namespace.Namespace.
-
createNamespace
public void createNamespace(Namespace namespace, java.util.Map<java.lang.String,java.lang.String> metadata)
Description copied from interface:SupportsNamespacesCreate a namespace in the catalog.- Specified by:
createNamespacein interfaceSupportsNamespaces- Parameters:
namespace- a multi-part namespacemetadata- a string Map of properties for the given namespace
-
namespaceExists
public boolean namespaceExists(Namespace namespace)
Description copied from interface:SupportsNamespacesChecks whether the Namespace exists.- Specified by:
namespaceExistsin interfaceSupportsNamespaces- Parameters:
namespace- a namespace.Namespace- Returns:
- true if the Namespace exists, false otherwise
-
dropNamespace
public boolean dropNamespace(Namespace namespace) throws NamespaceNotEmptyException
Description copied from interface:SupportsNamespacesDrop a namespace. If the namespace exists and was dropped, this will return true.- Specified by:
dropNamespacein 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) throws NoSuchNamespaceException
Description copied from interface:SupportsNamespacesSet 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:
setPropertiesin interfaceSupportsNamespaces- Parameters:
namespace- a namespace.Namespaceproperties- a collection of metadata to apply to the namespace- Throws:
NoSuchNamespaceException- If the namespace does not exist (optional)
-
removeProperties
public boolean removeProperties(Namespace namespace, java.util.Set<java.lang.String> properties) throws NoSuchNamespaceException
Description copied from interface:SupportsNamespacesRemove 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:
removePropertiesin interfaceSupportsNamespaces- Parameters:
namespace- a namespace.Namespaceproperties- a collection of metadata to apply to the namespace- Throws:
NoSuchNamespaceException- If the namespace does not exist (optional)
-
loadNamespaceMetadata
public java.util.Map<java.lang.String,java.lang.String> loadNamespaceMetadata(Namespace namespace) throws NoSuchNamespaceException
Description copied from interface:SupportsNamespacesLoad metadata properties for a namespace.- Specified by:
loadNamespaceMetadatain interfaceSupportsNamespaces- Parameters:
namespace- a namespace.Namespace- Returns:
- a string map of properties for the given namespace
- Throws:
NoSuchNamespaceException- If the namespace does not exist (optional)
-
listNamespaces
public java.util.List<Namespace> listNamespaces()
Description copied from interface:SupportsNamespacesList top-level namespaces from the catalog.If an object such as a table, view, or function exists, its parent namespaces must also exist and must be returned by this discovery method. For example, if table a.b.t exists, this method must return ["a"] in the result array.
- Specified by:
listNamespacesin interfaceSupportsNamespaces- Returns:
- a List of namespace
Namespacenames
-
listNamespaces
public java.util.List<Namespace> listNamespaces(Namespace namespace) throws NoSuchNamespaceException
Description copied from interface:SupportsNamespacesList 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:
listNamespacesin interfaceSupportsNamespaces- Returns:
- a List of child
Namespacenames from the given namespace - Throws:
NoSuchNamespaceException- If the namespace does not exist (optional)
- Given:
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classBaseMetastoreCatalog- Throws:
java.io.IOException
-
listViews
public java.util.List<TableIdentifier> listViews(Namespace namespace)
Description copied from interface:ViewCatalogReturn all the identifiers under this namespace.- Specified by:
listViewsin interfaceViewCatalog- Parameters:
namespace- a namespace- Returns:
- a list of identifiers for views
-
newViewOps
protected org.apache.iceberg.inmemory.InMemoryCatalog.InMemoryViewOperations newViewOps(TableIdentifier identifier)
- Specified by:
newViewOpsin classBaseMetastoreViewCatalog
-
dropView
public boolean dropView(TableIdentifier identifier)
Description copied from interface:ViewCatalogDrop a view.- Specified by:
dropViewin 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:ViewCatalogRename a view.- Specified by:
renameViewin interfaceViewCatalog- Parameters:
from- identifier of the view to renameto- new view identifier
-
-