Configure a Non-Native Table for Hive-to-Teradata | Teradata QueryGrid - Configuring a Non-Native Table for Hive-to-Teradata - Teradata QueryGrid

Teradata® QueryGrid™ Installation and User Guide

Teradata QueryGrid
Release Number
July 2022
English (United States)
Last Update
Product Category
Analytical Ecosystem
The Hive Storage Handlers framework is used for the Teradata QueryGrid Hive initiator connector. Storage handlers allow Hive to access data stored on other systems. A Hive table created using a storage handler is referred to as a non-native table.

Hive storage handlers operate at the table level, so one non-native table must be created for each remote table, unlike Teradata Foreign Servers and Presto Catalogs that operate at the database level.

The following steps provide an example of configuring a non-native table in order to use it with a Hive-to-Teradata link.

  1. Set the link properties for the Hive-to-Teradata link in the QueryGrid portlet.
  2. Log on to a Hive client such as Beeline.
  3. Add hive-loaderfactory JAR to the class path:
    add jar /opt/teradata/tdqg/connector/tdqg-hive-connector/version/lib/hive-loaderfactory-version.jar;

    There are others ways to add JARs to Hive class path, one of which is by setting HIVE_AUX_JARS_PATH.

    The last approach typically requires a Hive restart. If you are using a Cloudera implementation of Hadoop and Sentry is enabled, this may be the only option available for use because Sentry does not allow use of ADD JAR commands.
  4. Use a Hive storage handler to create the non-native table. For example:
    CREATE EXTERNAL TABLE cardata_remote
    ROW FORMAT SERDE 'com.teradata.querygrid.qgc.hive.QGSerDe'
    STORED BY'com.teradata.querygrid.qgc.hive.QGStorageHandler'
    There is no column definition in the CREATE TABLE statement because the column definition is inferred dynamically by the Serializer and Deserializer (SerDe).

    The table property clause contains the fully-qualified name of the remote table; for example, database.schema.table, schema.table, and table. If any part is omitted, default values (specified in connector properties) are used.