Class HiveCatalog

All Implemented Interfaces:
Closeable, AutoCloseable, org.apache.hadoop.conf.Configurable, Catalog, SupportsNamespaces, ViewCatalog

public class HiveCatalog extends BaseMetastoreViewCatalog implements SupportsNamespaces, org.apache.hadoop.conf.Configurable
  • Field Details

  • Constructor Details

    • HiveCatalog

      public HiveCatalog()
  • Method Details

    • initialize

      public void initialize(String inputName, Map<String,String> properties)
      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 interface Catalog
      Specified by:
      initialize in interface ViewCatalog
      Overrides:
      initialize in class BaseMetastoreViewCatalog
      Parameters:
      inputName - a custom name for the catalog
      properties - catalog properties
    • buildTable

      public Catalog.TableBuilder buildTable(TableIdentifier identifier, Schema schema)
      Description copied from interface: Catalog
      /** Instantiate a builder to either create a table or start a create/replace transaction.
      Specified by:
      buildTable in interface Catalog
      Overrides:
      buildTable in class BaseMetastoreViewCatalog
      Parameters:
      identifier - a table identifier
      schema - a schema
      Returns:
      the builder to create a table or start a create/replace transaction
    • buildView

      public ViewBuilder buildView(TableIdentifier identifier)
      Description copied from interface: ViewCatalog
      Instantiate a builder to create or replace a SQL view.
      Specified by:
      buildView in interface ViewCatalog
      Overrides:
      buildView in class BaseMetastoreViewCatalog
      Parameters:
      identifier - a view identifier
      Returns:
      a view builder
    • listTables

      public List<TableIdentifier> listTables(Namespace namespace)
      Description copied from interface: Catalog
      Return all the identifiers under this namespace.
      Specified by:
      listTables in interface Catalog
      Parameters:
      namespace - a namespace
      Returns:
      a list of identifiers for tables
    • listViews

      public List<TableIdentifier> listViews(Namespace namespace)
      Description copied from interface: ViewCatalog
      Return all the identifiers under this namespace.
      Specified by:
      listViews in interface ViewCatalog
      Parameters:
      namespace - a namespace
      Returns:
      a list of identifiers for views
    • name

      public String name()
      Description copied from interface: ViewCatalog
      Return the name for this catalog.
      Specified by:
      name in interface Catalog
      Specified by:
      name in interface ViewCatalog
      Overrides:
      name in class BaseMetastoreViewCatalog
      Returns:
      this catalog's name
    • 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.

      Specified by:
      dropTable in interface Catalog
      Parameters:
      identifier - a table identifier
      purge - if true, delete all data and metadata files in the table
      Returns:
      true if the table was dropped, false if the table did not exist
    • dropView

      public boolean dropView(TableIdentifier identifier)
      Description copied from interface: ViewCatalog
      Drop a view.
      Specified by:
      dropView in interface ViewCatalog
      Parameters:
      identifier - a view identifier
      Returns:
      true if the view was dropped, false if the view did not exist
    • renameTable

      public void renameTable(TableIdentifier from, TableIdentifier originalTo)
      Description copied from interface: Catalog
      Rename a table.
      Specified by:
      renameTable in interface Catalog
      Parameters:
      from - identifier of the table to rename
      originalTo - new table name
    • renameView

      public void renameView(TableIdentifier from, TableIdentifier to)
      Description copied from interface: ViewCatalog
      Rename a view.
      Specified by:
      renameView in interface ViewCatalog
      Parameters:
      from - identifier of the view to rename
      to - new view identifier
    • tableExists

      public boolean tableExists(TableIdentifier identifier)
      Check whether table or metadata table exists.

      Note: If a hive table with the same identifier exists in catalog, this method will return false.

      Specified by:
      tableExists in interface Catalog
      Parameters:
      identifier - a table identifier
      Returns:
      true if the table exists, false otherwise
    • viewExists

      public boolean viewExists(TableIdentifier viewIdentifier)
      Description copied from interface: ViewCatalog
      Check whether view exists.
      Specified by:
      viewExists in interface ViewCatalog
      Parameters:
      viewIdentifier - a view identifier
      Returns:
      true if the view exists, false otherwise
    • createNamespace

      public void createNamespace(Namespace namespace, Map<String,String> meta)
      Description copied from interface: SupportsNamespaces
      Create a namespace in the catalog.
      Specified by:
      createNamespace in interface SupportsNamespaces
      Parameters:
      namespace - a multi-part namespace
      meta - a string Map of properties for the given namespace
    • listNamespaces

      public List<Namespace> listNamespaces(Namespace namespace)
      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") and Namespace.of("a", "b", "d")
      • Given: Namespace.of("a", "b", "c")
      • Returns: empty list, because there are no child namespaces
      Specified by:
      listNamespaces in interface SupportsNamespaces
      Returns:
      a List of child Namespace names from the given namespace
    • dropNamespace

      public boolean dropNamespace(Namespace namespace)
      Description copied from interface: SupportsNamespaces
      Drop a namespace. If the namespace exists and was dropped, this will return true.
      Specified by:
      dropNamespace in interface SupportsNamespaces
      Parameters:
      namespace - a namespace. Namespace
      Returns:
      true if the namespace was dropped, false otherwise.
    • setProperties

      public boolean setProperties(Namespace namespace, Map<String,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 interface SupportsNamespaces
      Parameters:
      namespace - a namespace. Namespace
      properties - a collection of metadata to apply to the namespace
    • removeProperties

      public boolean removeProperties(Namespace namespace, Set<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 interface SupportsNamespaces
      Parameters:
      namespace - a namespace. Namespace
      properties - a collection of metadata to apply to the namespace
    • loadNamespaceMetadata

      public Map<String,String> loadNamespaceMetadata(Namespace namespace)
      Description copied from interface: SupportsNamespaces
      Load metadata properties for a namespace.
      Specified by:
      loadNamespaceMetadata in interface SupportsNamespaces
      Parameters:
      namespace - a namespace. Namespace
      Returns:
      a string map of properties for the given namespace
    • isValidIdentifier

      protected boolean isValidIdentifier(TableIdentifier tableIdentifier)
      Overrides:
      isValidIdentifier in class BaseMetastoreCatalog
    • newTableOps

      public TableOperations newTableOps(TableIdentifier tableIdentifier)
      Specified by:
      newTableOps in class BaseMetastoreCatalog
    • newViewOps

      protected ViewOperations newViewOps(TableIdentifier identifier)
      Specified by:
      newViewOps in class BaseMetastoreViewCatalog
    • defaultWarehouseLocation

      protected String defaultWarehouseLocation(TableIdentifier tableIdentifier)
      Specified by:
      defaultWarehouseLocation in class BaseMetastoreCatalog
    • toString

      public String toString()
      Overrides:
      toString in class BaseMetastoreCatalog
    • setConf

      public void setConf(org.apache.hadoop.conf.Configuration conf)
      Specified by:
      setConf in interface org.apache.hadoop.conf.Configurable
    • getConf

      public org.apache.hadoop.conf.Configuration getConf()
      Specified by:
      getConf in interface org.apache.hadoop.conf.Configurable
    • properties

      protected Map<String,String> properties()
      Overrides:
      properties in class BaseMetastoreCatalog