Package org.apache.iceberg.dell.ecs
Class EcsCatalog
java.lang.Object
org.apache.iceberg.BaseMetastoreCatalog
org.apache.iceberg.dell.ecs.EcsCatalog
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Catalog
,SupportsNamespaces
,Configurable<Object>
public class EcsCatalog
extends BaseMetastoreCatalog
implements SupportsNamespaces, Configurable<Object>
-
Nested Class Summary
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> properties) Create a namespace in the catalog.protected String
defaultWarehouseLocation
(TableIdentifier tableIdentifier) boolean
dropNamespace
(Namespace namespace) Drop a namespace.boolean
dropTable
(TableIdentifier identifier, boolean purge) Remove table object.void
initialize
(String name, Map<String, String> properties) Initialize a catalog given a custom name and a map of catalog properties.listNamespaces
(Namespace namespace) List child namespaces from the namespace.listTables
(Namespace namespace) Iterate all table objects with the namespace prefix.loadNamespaceMetadata
(Namespace namespace) Load namespace properties.name()
Return the name for this catalog.boolean
namespaceExists
(Namespace namespace) Checks whether the Namespace exists.protected TableOperations
newTableOps
(TableIdentifier tableIdentifier) Optional
<com.emc.object.s3.S3ObjectMetadata> objectMetadata
(org.apache.iceberg.dell.ecs.EcsURI uri) Get S3 object metadata which include E-Tag, user metadata and so on.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) Table rename will only move table object, the data objects will still be in-place.void
boolean
setProperties
(Namespace namespace, Map<String, String> properties) Set a collection of properties on a namespace in the catalog.boolean
tableExists
(TableIdentifier identifier) Check whether table exists.boolean
Methods inherited from class org.apache.iceberg.BaseMetastoreCatalog
buildTable, 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
Methods inherited from interface org.apache.iceberg.catalog.SupportsNamespaces
createNamespace, listNamespaces
-
Constructor Details
-
EcsCatalog
public EcsCatalog()No-arg constructor to load the catalog dynamically.All fields are initialized by calling
initialize(String, Map)
later.
-
-
Method Details
-
initialize
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 interfaceCatalog
- Parameters:
name
- a custom name for the catalogproperties
- catalog properties
-
newTableOps
- Specified by:
newTableOps
in classBaseMetastoreCatalog
-
defaultWarehouseLocation
- Specified by:
defaultWarehouseLocation
in classBaseMetastoreCatalog
-
listTables
Iterate all table objects with the namespace prefix.- Specified by:
listTables
in interfaceCatalog
- Parameters:
namespace
- a namespace- Returns:
- a list of identifiers for tables
-
dropTable
Remove table object. If the purge flag is set, remove all data objects. -
renameTable
Table rename will only move table object, the data objects will still be in-place.- 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 namespaceproperties
- 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 namespace 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 (optional)
-
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
public boolean setProperties(Namespace namespace, Map<String, String> properties) throws NoSuchNamespaceExceptionDescription 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- Throws:
NoSuchNamespaceException
- If the namespace does not exist (optional)
-
removeProperties
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 interfaceSupportsNamespaces
- Parameters:
namespace
- a namespace.Namespace
properties
- a collection of metadata to apply to the namespace- Throws:
NoSuchNamespaceException
- If the namespace does not exist (optional)
-
updateProperties
public boolean updateProperties(Namespace namespace, Consumer<Map<String, String>> propertiesFn) throws NoSuchNamespaceException- Throws:
NoSuchNamespaceException
-
namespaceExists
Description copied from interface:SupportsNamespaces
Checks whether the Namespace exists.- Specified by:
namespaceExists
in interfaceSupportsNamespaces
- Parameters:
namespace
- a namespace.Namespace
- Returns:
- true if the Namespace exists, false otherwise
-
tableExists
Description copied from interface:Catalog
Check whether table exists.- Specified by:
tableExists
in interfaceCatalog
- Parameters:
identifier
- a table identifier- Returns:
- true if the table exists, false otherwise
-
objectMetadata
public Optional<com.emc.object.s3.S3ObjectMetadata> objectMetadata(org.apache.iceberg.dell.ecs.EcsURI uri) Get S3 object metadata which include E-Tag, user metadata and so on. -
name
Description copied from interface:Catalog
Return the name for this catalog. -
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classBaseMetastoreCatalog
- Throws:
IOException
-
setConf
- Specified by:
setConf
in interfaceConfigurable<Object>
-
properties
- Overrides:
properties
in classBaseMetastoreCatalog
-