16.20 - create (Teradata Open Distribution for Hadoop) - Teradata Data Mover

Teradata® Data Mover 用户指南

Product
Teradata Data Mover
Release Number
16.20
Published
2021 年 11 月
Content Type
用户指南
Publication ID
B035-4101-107K-CHS
Language
中文 (简体)

用途

create 命令使用语法参数和对象列表在守护程序上创建一个作业。作业定义由参数和对象列表组成。

Data Mover 支持将 Teradata Database 中的表移至 Hadoop,以及将 Hadoop 中的 Hive 表移至 Teradata Database。

参数 - Hadoop 专用

以下是专用于 Hadoop 的参数。其中一些参数将根据传递机制的不同而采用不同的形式。

请参阅参数顺序

hadoop_options
这些参数仅适用于从 Teradata 到 Hadoop 的作业。使用 .xml 文件传递此信息时,可将选项嵌套在参数下。
选项 说明
file_options Teradata Connector for Hadoop 和 SQL-H 所支持的值:
  • Text(缺省)
  • RC
  • ORC
file_options_delimiter [可选] 指定列的字符分隔符。如果未指定,则以逗号 (',') 作为分隔符。仅当指定 file_options 为 Text 时,此选项才适用。
number_mappers [可选] 指定 Teradata 连接器用于从 Teradata Database 提取数据的映射器数量。
在使用 CLI 时用于传递等效信息的参数如下:
  • hadoop_file_option
  • hadoop_file_delimiter
  • hadoop_number_mappers
source_hadoop_system | target_hadoop_system
定义 Hadoop 数据的源站点或目标站点以及凭据信息。对于从 Teradata 到 Hadoop 以及从 Hadoop 到 Teradata,这些参数都适用。使用 .xml 文件传递这些参数时,可将选项嵌套在参数下。
选项 说明
webhcat_url http://webhcat:50111 检索元数据,如数据库、表、列等等。要构造 URL,请将 webhcat 替换为 WebHCAT 服务器所在的系统名称。端口 50111 是 WebHCAT 的缺省端口。1
oozie_url http://oozie:11000 运行数据移动所需的 Hive 查询以及 Teradata Connector for Hadoop (TDCH) 作业。要构造 URL,请将 oozie 替换为 Oozie 服务器所在的系统名称。11000 是 Oozie 的缺省端口。1
file_system_url http://webhdfs:50070 或 http://httpfs:14000 检索存储在 HDFS 中用于运行 TDCH 作业的配置文件以及 TDCH 作业生成的日志。指定 WebHDFS REST URLHttpFS REST URL。WebHDFS 的缺省端口为 50070。HttpFS 的缺省端口为 14000。1
logon_mechanism 缺省或 kerberos [可选] 用于登录到源或目标 Hadoop 文件系统的安全协议。
hive_user hive 或 hive_user@hadoop_realm 有权访问 Hadoop 文件系统中的表的用户的名称。

当登录机制为 kerberos 时,Hive 用户的值必须遵守以下约定: kerberos_principal@kerberos_realm

hive_password hive_user_password 有权访问源或目标 Hadoop 文件系统中表的用户的密码。2
hive_password_encrypted hive_user_password_encrypted 有权访问源或目标 Hadoop 文件系统中表的用户的加密密码。如果指定了 hive_password,则此参数无效。2
1该值必须以 http:// 开头且后跟系统名称或 IP 地址和端口号。如果登录机制为 kerberos,主机名必须是完全限定的域名。

2如果登录机制为default,此参数是可选的。如果登录机制为 kerberos,此参数是必需的并且必须是 hive_user 的密码。

在使用 CLI 时用于传递等效信息的参数如下:
  • source_hadoop_webhcat_url | target_hadoop_webhcat_url
  • source_hadoop_oozie_url | target_hadoop_oozie_url
  • source_hadoop_file_system_url | target_hadoop_file_system_url
  • source_hive_logon_mechanism | target_hive_logon mechanism
  • source_hive_user | target_hive_user
  • source_hive_password_encrypted | target_hive_password encrypted

参数 - 通用

以下参数对从 Teradata 到 Hadoop 和从 Hadoop 到 Teradata 的作业都适用。

请参阅参数顺序

broker.port
[可选] 可输入代理程序端口覆盖 commandline.properties 文件中指定的缺省值,以便在运行时连接到不同的 ActiveMQ 服务器(进而可连接到不同的守护程序)。
示例: 61616
broker.url
[可选] 可输入代理程序 URL 覆盖 commandline.properties 文件中指定的缺省值,以便在运行时连接到不同的 ActiveMQ 服务器(进而可连接到不同的守护程序)。
示例: dm-server1
compare_ddl
[可选] 指定是否对指定的源对象和目标对象的 DDL 进行比较。
有效值
  • unspecified(缺省)使用 Data Mover 守护程序配置文件中的 daemon.default.compareDDL.enabled 参数值。如果此参数指定为 true 或 false,则该值将覆盖 Data Mover 守护程序配置文件中的参数值。
  • true - 每次启动作业时不会重新创建作业步骤,但会比较源和目标的 DDL。
  • false - 每次启动作业时重新创建作业步骤,但不会对源和目标的 DDL 进行比较。
db_client_encryption
[可选] 数据传输期间需要加密作业时设置为 true
freeze_job_steps
[可选] 冻结作业步骤,以使其不会在每次启动作业时都重新创建。只有在创建作业后源环境和目标环境不会变化时,才应设置为 true
有效值
  • true - 每次启动作业时不重新创建作业步骤
  • false - 每次启动作业时重新创建作业步骤
  • unspecified(缺省)- 值设为 false
示例: true
job_name
[可选] 作业的名称。该名称必须是唯一的,并且最多包含 32 个字符。
job_priority
[可选] 指定作业的执行优先级。支持的值包括:“HIGH”、“MEDIUM”、“LOW”和“UNSPECIFIED”。如果未指定值,则运行时使用缺省值“MEDIUM”。
示例: MEDIUM
log_to_event_table
[可选] 指定要用于此作业的事件表。有关详细信息,请参阅使用事件表
overwrite_existing_objects
[可选] 作业覆盖目标上已存在的对象。
有效值
说明
true 启用覆盖
False 禁用覆盖
unspecified 缺省值- 此值将设置为 Data Mover 守护程序配置文件中的值
如果未指定此参数,该值将设置为 Data Mover 守护程序配置文件中的 overwrite_existing_objects 参数值。如果此参数指定为 true 或 false,则该值优先于 Data Mover 守护程序配置文件中的参数值。
示例: true
response_timeout
[可选] 等待 Data Mover 守护程序响应的时间(以秒为单位)。
示例: 60
source_password | target_password
[可选] 源或目标 Teradata 登录密码。如果指定了 source_password_encrypted | target_password_encrypted,则此参数无效。如果没有为此参数指定密码,命令将提示您以交互方式输入此密码。系统会用一系列星号屏蔽输入内容,而无论密码长度如何。
source_password_encrypted | target_password_encrypted
[可选] 源或目标 Teradata 加密登录密码。如果指定了 source_password | target_password ,则此参数无效。
source_tdpid | target_tdpid
源或目标 Teradata Database。
source_user | target_user
[可选] 源或目标 Teradata 登录 ID。如果没有为此参数指定登录 ID,此命令将提示您以交互方式输入此 ID。
source_userid_pool | target_userid_pool
[可选] 作业会从指定的凭据池提取用户。仅适用于 Teradata 系统。
选项 说明
source_userid_pool 从 Teradata 源系统中提取用户。
target_userid_pool 从 Teradata 目标系统中提取用户。
示例: POOL-1
table
选项 说明
name 要移动的表的名称。
target_name [可选] 重命名表。如果未指定任何值,则使用原始表名称。
target_database [可选] 将表移动到其他数据库。如果未指定任何值,则将原始数据库用作目标数据库。

参数 - Teradata 到 Hadoop

以下参数仅适用于从 Teradata 到 Hadoop 的作业。

请参阅参数顺序

force_utility
[可选] 强制 Data Mover 守护程序对从 Teradata 到 Hadoop 的作业使用特定实用程序。Data Mover 守护程序会使用 SQL-H 来移动表。如果 SQL-H 无法执行,则会使用 Teradata Connector for Hadoop 来移动表。
有效值
  • Default(Data Mover 确定是否可以使用 SQL-H 来移动表。如果无法使用,它将使用 Teradata Connector for Hadoop。)
  • Hadoop_Connector
  • SQLH
table_columns

[可选] 在将数据移至 Hadoop 之前自定义表列。如果目标表不存在,可以重命名目标端上的列。如果目标表已经存在,则列名称和类型应与目标上的列匹配。以下表列属性可在 Hadoop 上创建目标表或验证现有表的值。

选项 说明
name 要修改的列的名称
target_name [可选] 重命名列。如果未指定任何值,则将原始列名称用作目标名称。
target_type [可选] 更改缺省列类型。如果未指定任何值,则会使用缺省映射。有关缺省映射和可用映射的详细信息,请参阅数据类型映射
type 表列类型。仅供参考;不能由用户修改。
size [可选] 更改列类型的大小,仅适用于 CHAR 类型。如果未指定任何值,则使用缺省值 [255]。
transfer_method
[可选] Teradata Connector for Hadoop 支持以下从 Teradata 到 Hadoop 的数据传输选项。
选项 说明
Default 如果源 Teradata Database 为 14.10 或更高版本,则允许 Data Mover 选择 AMP。
Hash Hadoop 基础连接器在 Teradata 中从源表检索指定拆分列给定哈希值范围内的行,然后将这些记录写入 HDFS 中的目标文件内。
Value Hadoop 基础连接器在 Teradata 中从源表检索指定拆分列给定值范围内的行,然后将这些记录写入 HDFS 中的目标文件内。
Partition 如果源表不是 PPI 表,则 Hadoop 基础连接器将在源数据库上创建暂存 PPI 表。
Amp Hadoop 基础连接器在 Teradata 中从源表检索一个或多个 AMP 中的行,然后将这些记录写入 HDFS 中的一个目标文件。只有 Teradata Database 14.10 或更高版本支持 Amp 选项。
use_foreign_server

对于 T2H 实用程序,可以指定先前创建的外部服务器以将数据从 Hadoop 移动到 Teradata。该外部服务器用于移动特定作业中的所有表。

以下示例显示了 use_foreign_server 命令的用法,其中包括从 Teradata 到 Hadoop 作业的作业定义:
<use_foreign_server> 
        <name>foreign_server</name> 
</use_foreign_server>
必须指定一个外部服务器,以便 Data Mover 使用 T2H 将数据从 Teradata 15.0 移动到 Hadoop。如果未指定外部服务器,且强制实用程序不是 T2H,Data Mover 将使用 TDCH 代替 T2H。

参数 - Hadoop 到 Teradata

以下参数仅适用于从 Hadoop 到 Teradata 的作业。其中一些参数将根据传递机制的不同而采用不同的形式。

请参阅参数顺序

force_utility
[可选] 强制 Data Mover 守护程序对 Hadoop 复制操作使用特定实用程序。Data Mover 守护程序会使用 SQL-H 来移动表。如果 SQL-H 无法执行,则会使用 Teradata Connector for Hadoop 来移动表。
有效值
  • Default(Data Mover 确定是否可以使用 SQL-H 来移动表。如果无法使用,它将使用用于 Hadoop 的 Teradata Connector。)
  • Hadoop_Connector
  • SQLH
size
如果目标表不存在,请确保所有 CHAR/VARCHAR 列的总和不大于 64000;否则会由于 JDBC 限制导致作业在运行时失败。对于包含 UNICODE 会话字符集的列,应在计算所有列大小的总和时考虑将在大小中指定的值翻倍。例如,如果字符集列为 UNICODE 并且大小为 2000,则考虑大小 4000。
table_columns
[可选] 在将数据移至 Teradata Database 之前自定义表列。有关数据类型的详细信息,请参阅数据类型映射。如果目标表不存在,可以重命名目标端上的列。如果目标表已经存在,则列名称和类型应与目标上的列匹配。以下表列属性可在 Teradata Database 上创建目标表或验证现有表的值。
选项 说明
name 要修改的列的名称
size [可选] 限制 VARCHAR 等类型的列的大小
target_name [可选] 重命名列。如果未指定任何值,则将原始列名称用作目标名称。
target_type [可选] 更改缺省列类型。如果未指定任何值,则会使用缺省映射。有关缺省映射和可用映射的详细信息,请参阅数据类型映射
type 表列类型。仅供参考;不能由用户修改。
allowDuplicate [可选] 指定目标表列是否允许重复值(true 或 false)。如果 isPrimaryIndex 为 true,则不能指定此参数,或者必须将其设置为 false,否则将发生错误。
allowNull [可选] 指定目标表列是否允许空值(true 或 false)。如果 isPrimaryIndex 为 true,则不能指定此参数,或者必须将其设置为 false,否则将发生错误。
isPrimaryIndex [可选] 指定目标表列是否允许空值(true 或 false)。如果 isPrimaryIndex 为 false,而 allowNull 为 true,则不得指定 allowDuplicate,或者必须将其设置为 false,否则将发生错误。
transfer_method 1
[可选] Teradata Connector for Hadoop 支持以下从 Hadoop 到 Teradata 的数据传输选项。
选项 说明
缺省 Data Mover 选择 internal_fastload
batch_insert 基础 Hadoop 连接器通过 JDBC 批处理执行将行插入 NOPI 暂存表。在所有映射器均完成其处理之后,暂存表中的行将通过 Insert-Select SQL 操作插入目标表。
transfer_batch_insert_size 2 如果指定 batch_insert 作为传输方法,还可以指定此参数作为一个表示行数的值(例如 10000、50000)。指定 internal_fastload 作为传输方法时,此属性不适用。
internal_fastload Hadoop 基础连接器启动一个数据库 FastLoad 会话,将各行加载到单个 NOPI 暂存表中。所有数据库 FastLoad 会话都通过内部协议进行协调。当所有映射器的执行工作完成后,FastLoad 作业即完成,然后通过 Insert-Select SQL 操作将 NOPI 暂存表中的各行复制到目标表。
1在 CLI 中,此参数采用形式 hadoop_transfer_method

2在 CLI 中,此参数采用形式 hadoop_transfer_batch_size

use_foreign_server
在 Teradata Database 15.0 或更高版本中,可以指定先前创建的外部服务器以将数据从 Hadoop 移动到 Teradata。该外部服务器用于移动特定作业中的所有表。
以下示例显示了用于从 Hadoop 到 Teradata 的作业定义的 use_foreign_server 命令的用法。
<use_foreign_server>
       <name>foreign_server</name>
</use_foreign_server>            
必须指定一个外部服务器,以便 Data Mover 使用 T2H 将数据从 Hadoop 移动到 Teradata 15.0 或更高版本。如果未指定外部服务器,Data Mover 将使用 TDCH 代替 T2H。

XML 文件示例

对于 create 命令,请键入 datamove create -f parameters.xml

以下示例显示了用于 Teradata 到 Hadoop 的作业定义的 create 命令的参数文件。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
 <dmCreate xmlns="http://schemas.teradata.com/dataMover/v2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.teradata.com/unity/datamover.xsd">
 <!-- source td credentials -->
     <source_tdpid>dm-agent5</source_tdpid>
     <source_user>ak186010_portlet</source_user>
     <source_password>qwerty</source_password>
     <!-- target hadoop credentials -->
     <target_hadoop_system>
         <webHCat_url>http://webhcat:50111</webHCat_url>
         <oozie_url>http://oozie:11000</oozie_url>
         <file_system_url>http://webhdfs:50070</file_system_url>
         <hive_user>hive</hive_user>
         <hive_password>hive</hive_password>
     </target_hadoop_system>
     <overwrite_existing_objects>true</overwrite_existing_objects>
     <freeze_job_steps>false</freeze_job_steps>
     <target_database><name>ak186010_all</name></target_database>
     <compare_ddl>false</compare_ddl>
     <!-- hadoop specific job options -->
         <hadoop_options>
         <file_options>ORC</file_options>
         <file_options_delimiter>#</file_options_delimiter>
         <transfer_method>hash</transfer_method>
         <number_mappers>10</number_mappers>
     </hadoop_options>
 <!-- object selection. in this case, we are moving ITTest1 from ak186010_portlet
 (td) to default db in hive (hadoop)-->
     <database selection="unselected">
         <name>ak186010_portlet</name>
         <table selection="included">
             <name>Table1</name>
             <target_name>NewTable1</target_name>
             <table_columns>
                 <column>
                     <name>column1</name>
                     <target_name>targetColumn1</target_name>
                     <type>varchar</type>
                     <target_type>string</target_type>
                 </column>
             </table_columns>
         </table>
     </database>
 </dmCreate>            
以下示例显示了用于 Hadoop 到 Teradata 的作业定义的 create 命令的参数文件。
<dmCreate xmlns="http://schemas.teradata.com/dataMover/v2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.teradata.com/unity/datamover.xsd">
    <source_hadoop_system>
        <webHCat_url>http://webhcat:50111</webHCat_url>
        <oozie_url>http://oozie:11000</oozie_url>
        <file_system_url>http://webhdfs:50070</file_system_url>
        <hive_user>ssuser</hive_user>
        <hive_password>sspass</hive_password>
    </source_hadoop_system>
    <target_tdpid>dm-agent3</target_tdpid>
    <target_user>"yye"</target_user>
    <target_password>yye</target_password>
    <overwrite_existing_objects>true</overwrite_existing_objects>
    <force_utility>sqlh</force_utility>
    <freeze_job_steps>false</freeze_job_steps>
    <compare_ddl>false</compare_ddl>   
    <log_level>0</log_level>
    <online_archive>UNSPECIFIED</online_archive>
    <hadoop_options>
        <file_options>text</file_options>
        <file_options_delimiter>|</file_options_delimiter>
        <transfer_method>batch_insert</transfer_method>
        <transfer_batch_insert_size>10000</transfer_batch_insert_size>
        <number_mappers>5</number_mappers>
    </hadoop_options>
    
    <database selection="unselected">
        <name>yye</name>
        <table selection="included">
            <name>test1</name>
            <table_columns>
                <column>
                    <name>c1</name>
                    <target_name>t1</target_name>
                    <type>string</type>
                    <target_type>varchar</target_type>
                    <size>8</size>
                    <charset>UTF8</charset>
                    <allowNull>true</allowNull>
                    <allowDuplicate>false</allowDuplicate>
                    <isPrimaryIndex>true</isPrimaryIndex>
                </column>
            </table_columns>
        </table>
    </database>
</dmCreate>