通过 Teradata Database 15.0 中引入的外部服务器对象,您可以创建定义来从非 Teradata 系统(如 Hadoop 或 Oracle)查询数据。Data Mover 支持将这些外部服务器对象定义从一个 Teradata 系统复制到另一个 Teradata 系统。
所有外部服务器对象都会保留在数据库 TD_SERVER_DB 中。该数据库位于 Teradata Database 15.0 或更高版本中。
Hadoop 系统的外部服务器对象 DDL 如下所示。具有适当权限的数据库用户可以为系统信息已知的非 Teradata 系统创建外部服务器对象。有关如何创建、更新、删除或使用外部服务器对象的信息,请参阅 Teradata Database 文档。
要求和限制
- 创建和复制外部服务器对象需要在 Teradata Database 系统上正确安装并配置各自的外部服务器软件包。如果需要帮助,请联系全球技术支持中心,网址为 https://support.teradata.com。
- 必须为 Data Mover 作业用户授予对外部服务器对象的权限,否则该作业将失败。
- Data Mover 会通过执行 SQL 语句 SHOW FOREIGN foreign_server_name 检索外部对象 DDL。
- 必须为 Teradata Database 系统用户授予对外部服务器对象的权限,否则该作业将失败。
- 源系统和目标系统都必须是 Teradata 15.0 或更高版本的系统。
- Data Mover 不会解析外部服务器对象 DDL;而是会在目标系统上运行完全相同的 DDL。
- 仅会复制外部服务器对象定义。
- 不支持重定位,所有外部服务器对象都必须位于数据库 TD_SERVER_DB 中。
- 不支持部分复制。
- 不支持行计数验证。
- 不支持比较 DDL。
- 移动外部服务器对象定义时,不支持使用暂存表和暂存数据库。
- 可使用 ARC、DSA、TPT 或 JDBC 复制外部服务器对象定义。
- 如果要复制的对象在目标数据库中不存在,则会在目标数据库中创建该对象。如果对象在目标数据库中存在,则除非 overwrite_existing_objects 属性被设置为 false,否则将覆盖该对象。这种情况下,将生成创建时错误。
示例
通过指定 CREATE FOREIGN SERVER,对象名称以及服务器信息创建外部服务器对象。
CREATE FOREIGN SERVER MyServer USING server('sdll9119.labs.teradata.com') port('9083') hosttype('hadoop') hiveport ('10000') username('hive') DO IMPORT WITH syslib.load_from_hcatalog_hdp1_3_2 USING transformformatting('true'), DO EXPORT WITH syslib.load_to_hcatalog_hdp1_3_2;
以上示例创建了对象 MyServer,该对象定义了远程 hadoop 服务器 sdll7680.labs.teradata.com,访问端口为 9083。
- 您可以在 Teradata Database 系统上使用 function load_from_hcatalog_hdp1_3_2 从 MyServer 检索数据。
- 您可以使用 function load_to_hcatalog_hdp1_3_2 将数据导出到 MyServer。
- 在数据库 TD_SERVER_DB 中会创建对象 MyServer;您不需要使用完全限定名称。