Hive 存储处理程序框架用于 Teradata QueryGrid Hive 发起程序连接器。存储处理程序允许 Hive 访问存储在其他系统上的数据。使用存储处理程序创建的 Hive 表称为非本机表。
Hive 存储处理程序在表级别运行,因此必须为每个远程表创建一个非本机表,这与在数据库级别运行的 Teradata 外部服务器和 Presto 目录不同。
在以下步骤提供的示例中,将配置一个非本机表,使其能用于 Hive 到 Teradata 链接。
- 在 QueryGrid 门户组件中配置 Hive 到 Teradata 链接的链接属性。请参阅Hive 连接器和链接属性。
- 登录到 Hive 客户端,如 Beeline。
- 将 hive-loaderfactory JAR 添加到类路径:add jar /opt/teradata/tdqg/connector/tdqg-hive-connector/version/lib/hive-loaderfactory-version.jar;
还有其他方法可以将 JAR 添加到 Hive 类路径,其中一种方法是设置 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");
CREATE TABLE 语句中没有列定义,因为列定义是由序列化程序和反序列化程序 (SerDe) 动态推断出来的。表属性子句包含远程表的完全限定名称;例如,database.schema.table、schema.table 以及 table。如果省略任一部分,将使用缺省值(在连接器属性中指定)。