Hiveストレージ ハンドラ フレームワークは、Teradata QueryGridのHiveイニシエータ コネクタで使用されます。ストレージ ハンドラを使用すると、Hiveは他のシステムに格納されているデータにアクセスできるようになります。ストレージ ハンドラを使用して作成されたHiveテーブルは、非ネイティブ テーブルと呼ばれます。
Hiveストレージ ハンドラはテーブル レベルで動作するため、データベース レベルで動作するTeradata外部サーバーやPrestoカタログとは異なり、リモート テーブルごとに1つの非ネイティブ テーブルを作成する必要があります。
次のステップでは、非ネイティブ テーブルをHive-TargetConnector(TargetConnectorは任意のタイプのターゲット コネクタ)で使用できるように構成する例を示します。
- QueryGridポートレットでHiveからTeradataへのリンクのリンク プロパティを設定します。Hiveコネクタとリンクのプロパティを参照してください。
- BeelineなどのHiveクライアントにログオンし、hive-loaderfactory JARをクラス パスに追加します。
add jar /opt/teradata/tdqg/connector/tdqg-hive-connector/version/lib/hive-loaderfactory-version.jar;
JARをHiveクラス パスに追加する方法は他にもありますが、そのうちの1つではHIVE_AUX_JARS_PATHを設定します。
最後の方法では通常、Hiveを再起動する必要があります。HadoopのCloudera実装を使用していて、Sentryが有効になっている場合、SentryではADD JARコマンドの使用が許可されていないため、これが使用できる唯一のオプションである可能性があります。 - Hiveストレージ ハンドラを使用して非ネイティブ テーブルを作成します。 例:
CREATE EXTERNAL TABLE cardata_remote ROW FORMAT SERDE 'com.teradata.querygrid.qgc.hive.QGSerDe' STORED BY'com.teradata.querygrid.qgc.hive.QGStorageHandler' TBLPROPERTIES ( "link"="hive_to_td_link", "version"="active", "table"="ut1.cardata");
列定義がSerializer/Deserializer(SerDe)によって動的に推論されるため、CREATE TABLE文に列定義はありません。テーブル プロパティ句にはリモート テーブルの完全修飾名が含まれています(例: database.schema.table、schema.table、table)。一部が省略されている場合は、デフォルト値(コネクタ プロパティで指定)が使用されます。