Class RESTCatalog
- java.lang.Object
-
- org.apache.iceberg.rest.RESTCatalog
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,Catalog,SupportsNamespaces,Configurable<org.apache.hadoop.conf.Configuration>
public class RESTCatalog extends java.lang.Object implements Catalog, SupportsNamespaces, Configurable<org.apache.hadoop.conf.Configuration>, java.io.Closeable
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.iceberg.catalog.Catalog
Catalog.TableBuilder
-
-
Constructor Summary
Constructors Constructor Description RESTCatalog()RESTCatalog(java.util.function.Function<java.util.Map<java.lang.String,java.lang.String>,RESTClient> clientBuilder)RESTCatalog(SessionCatalog.SessionContext context, java.util.function.Function<java.util.Map<java.lang.String,java.lang.String>,RESTClient> clientBuilder)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Catalog.TableBuilderbuildTable(TableIdentifier ident, Schema schema)/** Instantiate a builder to either create a table or start a create/replace transaction.voidclose()voidcreateNamespace(Namespace ns, java.util.Map<java.lang.String,java.lang.String> props)Create a namespace in the catalog.TablecreateTable(TableIdentifier identifier, Schema schema)Create an unpartitioned table.TablecreateTable(TableIdentifier ident, Schema schema, PartitionSpec spec)Create a table.TablecreateTable(TableIdentifier ident, Schema schema, PartitionSpec spec, java.lang.String location, java.util.Map<java.lang.String,java.lang.String> props)Create a table.TablecreateTable(TableIdentifier ident, Schema schema, PartitionSpec spec, java.util.Map<java.lang.String,java.lang.String> props)Create a table.booleandropNamespace(Namespace ns)Drop a namespace.booleandropTable(TableIdentifier ident)Drop a table and delete all data and metadata files.booleandropTable(TableIdentifier ident, boolean purge)Drop a table; optionally delete data and metadata files.voidinitialize(java.lang.String name, java.util.Map<java.lang.String,java.lang.String> props)Initialize a catalog given a custom name and a map of catalog properties.voidinvalidateTable(TableIdentifier ident)Invalidate cached table metadata from current catalog.java.util.List<Namespace>listNamespaces(Namespace ns)List namespaces from the namespace.java.util.List<TableIdentifier>listTables(Namespace ns)Return all the identifiers under this namespace.java.util.Map<java.lang.String,java.lang.String>loadNamespaceMetadata(Namespace ns)Load metadata properties for a namespace.TableloadTable(TableIdentifier ident)Load a table.java.lang.Stringname()Return the name for this catalog.TransactionnewCreateTableTransaction(TableIdentifier identifier, Schema schema)Start a transaction to create a table.TransactionnewCreateTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec)Start a transaction to create a table.TransactionnewCreateTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec, java.lang.String location, java.util.Map<java.lang.String,java.lang.String> props)Start a transaction to create a table.TransactionnewCreateTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec, java.util.Map<java.lang.String,java.lang.String> props)Start a transaction to create a table.TransactionnewReplaceTableTransaction(TableIdentifier ident, Schema schema, boolean orCreate)Start a transaction to replace a table.TransactionnewReplaceTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec, boolean orCreate)Start a transaction to replace a table.TransactionnewReplaceTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec, java.lang.String location, java.util.Map<java.lang.String,java.lang.String> props, boolean orCreate)Start a transaction to replace a table.TransactionnewReplaceTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec, java.util.Map<java.lang.String,java.lang.String> props, boolean orCreate)Start a transaction to replace a table.java.util.Map<java.lang.String,java.lang.String>properties()TableregisterTable(TableIdentifier ident, java.lang.String metadataFileLocation)Register a table with the catalog if it does not exist.booleanremoveProperties(Namespace ns, java.util.Set<java.lang.String> props)Remove a set of property keys from a namespace in the catalog.voidrenameTable(TableIdentifier from, TableIdentifier to)Rename a table.voidsetConf(org.apache.hadoop.conf.Configuration conf)booleansetProperties(Namespace ns, java.util.Map<java.lang.String,java.lang.String> props)Set a collection of properties on a namespace in the catalog.booleantableExists(TableIdentifier ident)Check whether table exists.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.iceberg.catalog.SupportsNamespaces
createNamespace, listNamespaces, namespaceExists
-
-
-
-
Constructor Detail
-
RESTCatalog
public RESTCatalog()
-
RESTCatalog
public RESTCatalog(java.util.function.Function<java.util.Map<java.lang.String,java.lang.String>,RESTClient> clientBuilder)
-
RESTCatalog
public RESTCatalog(SessionCatalog.SessionContext context, java.util.function.Function<java.util.Map<java.lang.String,java.lang.String>,RESTClient> clientBuilder)
-
-
Method Detail
-
initialize
public void initialize(java.lang.String name, java.util.Map<java.lang.String,java.lang.String> props)Description copied from interface:CatalogInitialize 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:
initializein interfaceCatalog- Parameters:
name- a custom name for the catalogprops- catalog properties
-
name
public java.lang.String name()
Description copied from interface:CatalogReturn the name for this catalog.
-
properties
public java.util.Map<java.lang.String,java.lang.String> properties()
-
listTables
public java.util.List<TableIdentifier> listTables(Namespace ns)
Description copied from interface:CatalogReturn all the identifiers under this namespace.- Specified by:
listTablesin interfaceCatalog- Parameters:
ns- a namespace- Returns:
- a list of identifiers for tables
-
tableExists
public boolean tableExists(TableIdentifier ident)
Description copied from interface:CatalogCheck whether table exists.- Specified by:
tableExistsin interfaceCatalog- Parameters:
ident- a table identifier- Returns:
- true if the table exists, false otherwise
-
loadTable
public Table loadTable(TableIdentifier ident)
Description copied from interface:CatalogLoad a table.
-
invalidateTable
public void invalidateTable(TableIdentifier ident)
Description copied from interface:CatalogInvalidate cached table metadata from current catalog.If the table is already loaded or cached, drop cached data. If the table does not exist or is not cached, do nothing.
- Specified by:
invalidateTablein interfaceCatalog- Parameters:
ident- a table identifier
-
buildTable
public Catalog.TableBuilder buildTable(TableIdentifier ident, Schema schema)
Description copied from interface:Catalog/** Instantiate a builder to either create a table or start a create/replace transaction.- Specified by:
buildTablein interfaceCatalog- Parameters:
ident- a table identifierschema- a schema- Returns:
- the builder to create a table or start a create/replace transaction
-
createTable
public Table createTable(TableIdentifier ident, Schema schema, PartitionSpec spec, java.lang.String location, java.util.Map<java.lang.String,java.lang.String> props)
Description copied from interface:CatalogCreate a table.- Specified by:
createTablein interfaceCatalog- Parameters:
ident- a table identifierschema- a schemaspec- a partition speclocation- a location for the table; leave null if unspecifiedprops- a string map of table properties- Returns:
- a Table instance
-
createTable
public Table createTable(TableIdentifier ident, Schema schema, PartitionSpec spec, java.util.Map<java.lang.String,java.lang.String> props)
Description copied from interface:CatalogCreate a table.- Specified by:
createTablein interfaceCatalog- Parameters:
ident- a table identifierschema- a schemaspec- a partition specprops- a string map of table properties- Returns:
- a Table instance
-
createTable
public Table createTable(TableIdentifier ident, Schema schema, PartitionSpec spec)
Description copied from interface:CatalogCreate a table.- Specified by:
createTablein interfaceCatalog- Parameters:
ident- a table identifierschema- a schemaspec- a partition spec- Returns:
- a Table instance
-
createTable
public Table createTable(TableIdentifier identifier, Schema schema)
Description copied from interface:CatalogCreate an unpartitioned table.- Specified by:
createTablein interfaceCatalog- Parameters:
identifier- a table identifierschema- a schema- Returns:
- a Table instance
-
newCreateTableTransaction
public Transaction newCreateTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec, java.lang.String location, java.util.Map<java.lang.String,java.lang.String> props)
Description copied from interface:CatalogStart a transaction to create a table.- Specified by:
newCreateTableTransactionin interfaceCatalog- Parameters:
ident- a table identifierschema- a schemaspec- a partition speclocation- a location for the table; leave null if unspecifiedprops- a string map of table properties- Returns:
- a
Transactionto create the table
-
newCreateTableTransaction
public Transaction newCreateTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec, java.util.Map<java.lang.String,java.lang.String> props)
Description copied from interface:CatalogStart a transaction to create a table.- Specified by:
newCreateTableTransactionin interfaceCatalog- Parameters:
ident- a table identifierschema- a schemaspec- a partition specprops- a string map of table properties- Returns:
- a
Transactionto create the table
-
newCreateTableTransaction
public Transaction newCreateTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec)
Description copied from interface:CatalogStart a transaction to create a table.- Specified by:
newCreateTableTransactionin interfaceCatalog- Parameters:
ident- a table identifierschema- a schemaspec- a partition spec- Returns:
- a
Transactionto create the table
-
newCreateTableTransaction
public Transaction newCreateTableTransaction(TableIdentifier identifier, Schema schema)
Description copied from interface:CatalogStart a transaction to create a table.- Specified by:
newCreateTableTransactionin interfaceCatalog- Parameters:
identifier- a table identifierschema- a schema- Returns:
- a
Transactionto create the table
-
newReplaceTableTransaction
public Transaction newReplaceTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec, java.lang.String location, java.util.Map<java.lang.String,java.lang.String> props, boolean orCreate)
Description copied from interface:CatalogStart a transaction to replace a table.- Specified by:
newReplaceTableTransactionin interfaceCatalog- Parameters:
ident- a table identifierschema- a schemaspec- a partition speclocation- a location for the table; leave null if unspecifiedprops- a string map of table propertiesorCreate- whether to create the table if not exists- Returns:
- a
Transactionto replace the table
-
newReplaceTableTransaction
public Transaction newReplaceTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec, java.util.Map<java.lang.String,java.lang.String> props, boolean orCreate)
Description copied from interface:CatalogStart a transaction to replace a table.- Specified by:
newReplaceTableTransactionin interfaceCatalog- Parameters:
ident- a table identifierschema- a schemaspec- a partition specprops- a string map of table propertiesorCreate- whether to create the table if not exists- Returns:
- a
Transactionto replace the table
-
newReplaceTableTransaction
public Transaction newReplaceTableTransaction(TableIdentifier ident, Schema schema, PartitionSpec spec, boolean orCreate)
Description copied from interface:CatalogStart a transaction to replace a table.- Specified by:
newReplaceTableTransactionin interfaceCatalog- Parameters:
ident- a table identifierschema- a schemaspec- a partition specorCreate- whether to create the table if not exists- Returns:
- a
Transactionto replace the table
-
newReplaceTableTransaction
public Transaction newReplaceTableTransaction(TableIdentifier ident, Schema schema, boolean orCreate)
Description copied from interface:CatalogStart a transaction to replace a table.- Specified by:
newReplaceTableTransactionin interfaceCatalog- Parameters:
ident- a table identifierschema- a schemaorCreate- whether to create the table if not exists- Returns:
- a
Transactionto replace the table
-
dropTable
public boolean dropTable(TableIdentifier ident)
Description copied from interface:CatalogDrop a table and delete all data and metadata files.
-
dropTable
public boolean dropTable(TableIdentifier ident, 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.
-
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
-
registerTable
public Table registerTable(TableIdentifier ident, java.lang.String metadataFileLocation)
Description copied from interface:CatalogRegister a table with the catalog if it does not exist.- Specified by:
registerTablein interfaceCatalog- Parameters:
ident- a table identifiermetadataFileLocation- the location of a metadata file- Returns:
- a Table instance
-
createNamespace
public void createNamespace(Namespace ns, java.util.Map<java.lang.String,java.lang.String> props)
Description copied from interface:SupportsNamespacesCreate a namespace in the catalog.- Specified by:
createNamespacein interfaceSupportsNamespaces- Parameters:
ns- a multi-part namespaceprops- a string Map of properties for the given namespace
-
listNamespaces
public java.util.List<Namespace> listNamespaces(Namespace ns) throws NoSuchNamespaceException
Description copied from interface:SupportsNamespacesList namespaces from the namespace.For example, if table a.b.t exists, use 'SELECT NAMESPACE IN a' this method must return Namepace.of("a","b")
Namespace.- Specified by:
listNamespacesin interfaceSupportsNamespaces- Returns:
- a List of namespace
Namespacenames - Throws:
NoSuchNamespaceException- If the namespace does not exist (optional)
-
loadNamespaceMetadata
public java.util.Map<java.lang.String,java.lang.String> loadNamespaceMetadata(Namespace ns) throws NoSuchNamespaceException
Description copied from interface:SupportsNamespacesLoad metadata properties for a namespace.- Specified by:
loadNamespaceMetadatain interfaceSupportsNamespaces- Parameters:
ns- a namespace.Namespace- Returns:
- a string map of properties for the given namespace
- Throws:
NoSuchNamespaceException- If the namespace does not exist (optional)
-
dropNamespace
public boolean dropNamespace(Namespace ns) 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:
ns- 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 ns, java.util.Map<java.lang.String,java.lang.String> props) 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:
ns- a namespace.Namespaceprops- a collection of metadata to apply to the namespace- Throws:
NoSuchNamespaceException- If the namespace does not exist (optional)
-
removeProperties
public boolean removeProperties(Namespace ns, java.util.Set<java.lang.String> props) 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:
ns- a namespace.Namespaceprops- a collection of metadata to apply to the namespace- Throws:
NoSuchNamespaceException- If the namespace does not exist (optional)
-
setConf
public void setConf(org.apache.hadoop.conf.Configuration conf)
- Specified by:
setConfin interfaceConfigurable<org.apache.hadoop.conf.Configuration>
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Throws:
java.io.IOException
-
-