Package org.apache.iceberg.spark
Class SparkCatalog
java.lang.Object
org.apache.iceberg.spark.SparkCatalog
- All Implemented Interfaces:
HasIcebergCatalog,SupportsReplaceView,org.apache.spark.sql.connector.catalog.CatalogPlugin,org.apache.spark.sql.connector.catalog.FunctionCatalog,org.apache.spark.sql.connector.catalog.ProcedureCatalog,org.apache.spark.sql.connector.catalog.StagingTableCatalog,org.apache.spark.sql.connector.catalog.SupportsNamespaces,org.apache.spark.sql.connector.catalog.TableCatalog,org.apache.spark.sql.connector.catalog.ViewCatalog
A Spark TableCatalog implementation that wraps an Iceberg
Catalog.
This supports the following catalog configuration options:
type- catalog type, "hive" or "hadoop" or "rest". To specify a non-hive or hadoop catalog, use thecatalog-imploption.uri- the Hive Metastore URI for Hive catalog or REST URI for REST catalogwarehouse- the warehouse path (Hadoop catalog only)catalog-impl- a customCatalogimplementation to useio-impl- a customFileIOimplementation to usemetrics-reporter-impl- a customMetricsReporterimplementation to usedefault-namespace- a namespace to use as the defaultcache-enabled- whether to enable catalog cachecache.case-sensitive- whether the catalog cache should compare table identifiers in a case sensitive waycache.expiration-interval-ms- interval in millis before expiring tables from catalog cache. Refer toCatalogProperties.CACHE_EXPIRATION_INTERVAL_MSfor further details and significant values.table-default.$tablePropertyKey- table property $tablePropertyKey default at catalog leveltable-override.$tablePropertyKey- table property $tablePropertyKey enforced at catalog level
-
Field Summary
Fields inherited from interface org.apache.spark.sql.connector.catalog.SupportsNamespaces
PROP_COMMENT, PROP_LOCATION, PROP_OWNERFields inherited from interface org.apache.spark.sql.connector.catalog.TableCatalog
OPTION_PREFIX, PROP_COLLATION, PROP_COMMENT, PROP_EXTERNAL, PROP_IS_MANAGED_LOCATION, PROP_LOCATION, PROP_OWNER, PROP_PROVIDERFields inherited from interface org.apache.spark.sql.connector.catalog.ViewCatalog
PROP_COMMENT, PROP_CREATE_ENGINE_VERSION, PROP_ENGINE_VERSION, PROP_OWNER, RESERVED_PROPERTIES -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidalterNamespace(String[] namespace, org.apache.spark.sql.connector.catalog.NamespaceChange... changes) org.apache.spark.sql.connector.catalog.TablealterTable(org.apache.spark.sql.connector.catalog.Identifier ident, org.apache.spark.sql.connector.catalog.TableChange... changes) org.apache.spark.sql.connector.catalog.ViewalterView(org.apache.spark.sql.connector.catalog.Identifier ident, org.apache.spark.sql.connector.catalog.ViewChange... changes) protected CatalogbuildIcebergCatalog(String name, org.apache.spark.sql.util.CaseInsensitiveStringMap options) Build an IcebergCatalogto be used by this Spark catalog adapter.protected TableIdentifierbuildIdentifier(org.apache.spark.sql.connector.catalog.Identifier identifier) Build an IcebergTableIdentifierfor the given Spark identifier.voidcreateNamespace(String[] namespace, Map<String, String> metadata) org.apache.spark.sql.connector.catalog.TablecreateTable(org.apache.spark.sql.connector.catalog.Identifier ident, org.apache.spark.sql.types.StructType schema, org.apache.spark.sql.connector.expressions.Transform[] transforms, Map<String, String> properties) org.apache.spark.sql.connector.catalog.ViewcreateView(org.apache.spark.sql.connector.catalog.ViewInfo viewInfo) String[]booleandropNamespace(String[] namespace, boolean cascade) booleandropTable(org.apache.spark.sql.connector.catalog.Identifier ident) booleandropView(org.apache.spark.sql.connector.catalog.Identifier ident) Returns the underlyingCatalogbacking this Spark Catalogfinal voidinitialize(String name, org.apache.spark.sql.util.CaseInsensitiveStringMap options) voidinvalidateTable(org.apache.spark.sql.connector.catalog.Identifier ident) booleanisExistingNamespace(String[] namespace) booleanisFunctionNamespace(String[] namespace) default org.apache.spark.sql.connector.catalog.Identifier[]listFunctions(String[] namespace) String[][]String[][]listNamespaces(String[] namespace) org.apache.spark.sql.connector.catalog.Identifier[]listTables(String[] namespace) org.apache.spark.sql.connector.catalog.Identifier[]default org.apache.spark.sql.connector.catalog.functions.UnboundFunctionloadFunction(org.apache.spark.sql.connector.catalog.Identifier ident) loadNamespaceMetadata(String[] namespace) org.apache.spark.sql.connector.catalog.procedures.UnboundProcedureloadProcedure(org.apache.spark.sql.connector.catalog.Identifier ident) org.apache.spark.sql.connector.catalog.TableloadTable(org.apache.spark.sql.connector.catalog.Identifier ident) org.apache.spark.sql.connector.catalog.TableloadTable(org.apache.spark.sql.connector.catalog.Identifier ident, long timestamp) org.apache.spark.sql.connector.catalog.Tableorg.apache.spark.sql.connector.catalog.ViewloadView(org.apache.spark.sql.connector.catalog.Identifier ident) name()booleanpurgeTable(org.apache.spark.sql.connector.catalog.Identifier ident) voidrenameTable(org.apache.spark.sql.connector.catalog.Identifier from, org.apache.spark.sql.connector.catalog.Identifier to) voidrenameView(org.apache.spark.sql.connector.catalog.Identifier fromIdentifier, org.apache.spark.sql.connector.catalog.Identifier toIdentifier) org.apache.spark.sql.connector.catalog.ViewreplaceView(org.apache.spark.sql.connector.catalog.Identifier ident, String sql, String currentCatalog, String[] currentNamespace, org.apache.spark.sql.types.StructType schema, String[] queryColumnNames, String[] columnAliases, String[] columnComments, Map<String, String> properties) Replace a view in the catalogorg.apache.spark.sql.connector.catalog.StagedTablestageCreate(org.apache.spark.sql.connector.catalog.Identifier ident, org.apache.spark.sql.types.StructType schema, org.apache.spark.sql.connector.expressions.Transform[] transforms, Map<String, String> properties) org.apache.spark.sql.connector.catalog.StagedTablestageCreateOrReplace(org.apache.spark.sql.connector.catalog.Identifier ident, org.apache.spark.sql.types.StructType schema, org.apache.spark.sql.connector.expressions.Transform[] transforms, Map<String, String> properties) org.apache.spark.sql.connector.catalog.StagedTablestageReplace(org.apache.spark.sql.connector.catalog.Identifier ident, org.apache.spark.sql.types.StructType schema, org.apache.spark.sql.connector.expressions.Transform[] transforms, Map<String, String> properties) booleanMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.spark.sql.connector.catalog.FunctionCatalog
functionExistsMethods inherited from interface org.apache.spark.sql.connector.catalog.StagingTableCatalog
stageCreate, stageCreateOrReplace, stageReplace, supportedCustomMetricsMethods inherited from interface org.apache.spark.sql.connector.catalog.SupportsNamespaces
namespaceExistsMethods inherited from interface org.apache.spark.sql.connector.catalog.TableCatalog
capabilities, createTable, loadTable, tableExistsMethods inherited from interface org.apache.spark.sql.connector.catalog.ViewCatalog
invalidateView, replaceView, viewExists
-
Constructor Details
-
SparkCatalog
public SparkCatalog()
-
-
Method Details
-
buildIcebergCatalog
protected Catalog buildIcebergCatalog(String name, org.apache.spark.sql.util.CaseInsensitiveStringMap options) Build an IcebergCatalogto be used by this Spark catalog adapter.- Parameters:
name- Spark's catalog nameoptions- Spark's catalog options- Returns:
- an Iceberg catalog
-
buildIdentifier
protected TableIdentifier buildIdentifier(org.apache.spark.sql.connector.catalog.Identifier identifier) Build an IcebergTableIdentifierfor the given Spark identifier.- Parameters:
identifier- Spark's identifier- Returns:
- an Iceberg identifier
-
loadTable
public org.apache.spark.sql.connector.catalog.Table loadTable(org.apache.spark.sql.connector.catalog.Identifier ident) throws org.apache.spark.sql.catalyst.analysis.NoSuchTableException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchTableException
-
loadTable
public org.apache.spark.sql.connector.catalog.Table loadTable(org.apache.spark.sql.connector.catalog.Identifier ident, String version) throws org.apache.spark.sql.catalyst.analysis.NoSuchTableException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchTableException
-
loadTable
public org.apache.spark.sql.connector.catalog.Table loadTable(org.apache.spark.sql.connector.catalog.Identifier ident, long timestamp) throws org.apache.spark.sql.catalyst.analysis.NoSuchTableException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchTableException
-
createTable
public org.apache.spark.sql.connector.catalog.Table createTable(org.apache.spark.sql.connector.catalog.Identifier ident, org.apache.spark.sql.types.StructType schema, org.apache.spark.sql.connector.expressions.Transform[] transforms, Map<String, String> properties) throws org.apache.spark.sql.catalyst.analysis.TableAlreadyExistsException- Throws:
org.apache.spark.sql.catalyst.analysis.TableAlreadyExistsException
-
stageCreate
public org.apache.spark.sql.connector.catalog.StagedTable stageCreate(org.apache.spark.sql.connector.catalog.Identifier ident, org.apache.spark.sql.types.StructType schema, org.apache.spark.sql.connector.expressions.Transform[] transforms, Map<String, String> properties) throws org.apache.spark.sql.catalyst.analysis.TableAlreadyExistsException- Throws:
org.apache.spark.sql.catalyst.analysis.TableAlreadyExistsException
-
stageReplace
public org.apache.spark.sql.connector.catalog.StagedTable stageReplace(org.apache.spark.sql.connector.catalog.Identifier ident, org.apache.spark.sql.types.StructType schema, org.apache.spark.sql.connector.expressions.Transform[] transforms, Map<String, String> properties) throws org.apache.spark.sql.catalyst.analysis.NoSuchTableException- Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchTableException
-
stageCreateOrReplace
-
alterTable
public org.apache.spark.sql.connector.catalog.Table alterTable(org.apache.spark.sql.connector.catalog.Identifier ident, org.apache.spark.sql.connector.catalog.TableChange... changes) throws org.apache.spark.sql.catalyst.analysis.NoSuchTableException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchTableException
-
dropTable
public boolean dropTable(org.apache.spark.sql.connector.catalog.Identifier ident) -
purgeTable
public boolean purgeTable(org.apache.spark.sql.connector.catalog.Identifier ident) -
renameTable
public void renameTable(org.apache.spark.sql.connector.catalog.Identifier from, org.apache.spark.sql.connector.catalog.Identifier to) throws org.apache.spark.sql.catalyst.analysis.NoSuchTableException, org.apache.spark.sql.catalyst.analysis.TableAlreadyExistsException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchTableExceptionorg.apache.spark.sql.catalyst.analysis.TableAlreadyExistsException
-
invalidateTable
public void invalidateTable(org.apache.spark.sql.connector.catalog.Identifier ident) -
listTables
-
defaultNamespace
-
listNamespaces
-
listNamespaces
public String[][] listNamespaces(String[] namespace) throws org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException
-
loadNamespaceMetadata
public Map<String,String> loadNamespaceMetadata(String[] namespace) throws org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException
-
createNamespace
public void createNamespace(String[] namespace, Map<String, String> metadata) throws org.apache.spark.sql.catalyst.analysis.NamespaceAlreadyExistsException- Throws:
org.apache.spark.sql.catalyst.analysis.NamespaceAlreadyExistsException
-
alterNamespace
public void alterNamespace(String[] namespace, org.apache.spark.sql.connector.catalog.NamespaceChange... changes) throws org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException
-
dropNamespace
public boolean dropNamespace(String[] namespace, boolean cascade) throws org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException
-
listViews
-
loadView
public org.apache.spark.sql.connector.catalog.View loadView(org.apache.spark.sql.connector.catalog.Identifier ident) throws org.apache.spark.sql.catalyst.analysis.NoSuchViewException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchViewException
-
createView
public org.apache.spark.sql.connector.catalog.View createView(org.apache.spark.sql.connector.catalog.ViewInfo viewInfo) throws org.apache.spark.sql.catalyst.analysis.ViewAlreadyExistsException, org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException - Throws:
org.apache.spark.sql.catalyst.analysis.ViewAlreadyExistsExceptionorg.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException
-
replaceView
public org.apache.spark.sql.connector.catalog.View replaceView(org.apache.spark.sql.connector.catalog.Identifier ident, String sql, String currentCatalog, String[] currentNamespace, org.apache.spark.sql.types.StructType schema, String[] queryColumnNames, String[] columnAliases, String[] columnComments, Map<String, String> properties) throws org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException, org.apache.spark.sql.catalyst.analysis.NoSuchViewExceptionDescription copied from interface:SupportsReplaceViewReplace a view in the catalog- Parameters:
ident- a view identifiersql- the SQL text that defines the viewcurrentCatalog- the current catalogcurrentNamespace- the current namespaceschema- the view query output schemaqueryColumnNames- the query column namescolumnAliases- the column aliasescolumnComments- the column commentsproperties- the view properties- Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException- If the identifier namespace does not exist (optional)org.apache.spark.sql.catalyst.analysis.NoSuchViewException- If the view doesn't exist or is a table
-
alterView
public org.apache.spark.sql.connector.catalog.View alterView(org.apache.spark.sql.connector.catalog.Identifier ident, org.apache.spark.sql.connector.catalog.ViewChange... changes) throws org.apache.spark.sql.catalyst.analysis.NoSuchViewException, IllegalArgumentException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchViewExceptionIllegalArgumentException
-
dropView
public boolean dropView(org.apache.spark.sql.connector.catalog.Identifier ident) -
renameView
public void renameView(org.apache.spark.sql.connector.catalog.Identifier fromIdentifier, org.apache.spark.sql.connector.catalog.Identifier toIdentifier) throws org.apache.spark.sql.catalyst.analysis.NoSuchViewException, org.apache.spark.sql.catalyst.analysis.ViewAlreadyExistsException - Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchViewExceptionorg.apache.spark.sql.catalyst.analysis.ViewAlreadyExistsException
-
initialize
public final void initialize(String name, org.apache.spark.sql.util.CaseInsensitiveStringMap options) - Specified by:
initializein interfaceorg.apache.spark.sql.connector.catalog.CatalogPlugin
-
name
-
icebergCatalog
Description copied from interface:HasIcebergCatalogReturns the underlyingCatalogbacking this Spark Catalog -
loadProcedure
public org.apache.spark.sql.connector.catalog.procedures.UnboundProcedure loadProcedure(org.apache.spark.sql.connector.catalog.Identifier ident) - Specified by:
loadProcedurein interfaceorg.apache.spark.sql.connector.catalog.ProcedureCatalog
-
isFunctionNamespace
-
isExistingNamespace
-
useNullableQuerySchema
public boolean useNullableQuerySchema()- Specified by:
useNullableQuerySchemain interfaceorg.apache.spark.sql.connector.catalog.TableCatalog
-
listFunctions
default org.apache.spark.sql.connector.catalog.Identifier[] listFunctions(String[] namespace) throws org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException - Specified by:
listFunctionsin interfaceorg.apache.spark.sql.connector.catalog.FunctionCatalog- Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchNamespaceException
-
loadFunction
default org.apache.spark.sql.connector.catalog.functions.UnboundFunction loadFunction(org.apache.spark.sql.connector.catalog.Identifier ident) throws org.apache.spark.sql.catalyst.analysis.NoSuchFunctionException - Specified by:
loadFunctionin interfaceorg.apache.spark.sql.connector.catalog.FunctionCatalog- Throws:
org.apache.spark.sql.catalyst.analysis.NoSuchFunctionException
-