Data Generator

支持的管道类型:

  •  Data Collector

Data Generator处理器使用指定的数据格式将记录序列化为单个字符串或字节数组字段。

当您想要执行仅在整个记录的字段级别可用的处理时,可以使用Data Generator处理器。例如,Encrypt and Decrypt Fields处理器可以加密一个或多个字段中的数据,但不加密整个记录。要加密整个记录,可以使用Data Generator将记录序列化为单个字段,然后使用Encrypt and Decrypt Fields处理器对字段进行加密。

配置Data Generator时,您可以指定目标字段和要使用的输出类型,字符串或字节数组。您还可以为序列化记录和相关属性指定数据格式。

目标字段

使用Data Generator处理器时,可以指定序列化记录的目标字段。

当您指定新的字段路径时,处理器将创建新的字段并将序列化的记录写入其中。输入现有的字段路径时,处理器将现有字段中的数据替换为序列化的记录。当您输入 /根字段时,处理器将整个记录替换为包含序列化记录的单个字段。

数据格式

Data Generator处理器根据您选择的数据格式以不同的方式生成记录。处理器可以生成以下类型的数据:

Avro
该阶段基于Avro模式写入记录。您可以使用以下方法之一来指定Avro模式定义的位置:
  • 在管道配置中 -使用您在阶段配置中提供的模式。
  • 在记录头中 -使用avroSchema记录头属性中包含的模式。
  • Confluent Schema Registry-从Confluent Schema Registry检索模式。Confluent Schema Registry是Avro模式的分布式存储层。您可以配置目标以通过模式ID或主题在Confluent Schema Registry中查找模式。

    如果在阶段或记录头属性中使用Avro模式,则可以选择配置阶段以向Confluent Schema Registry注册Avro模式。您还可以选择在消息中包括模式定义。省略模式定义可以提高性能,但是需要适当的模式管理,以避免丢失与数据关联的模式的跟踪。

您可以在输出中包括Avro模式。
您还可以使用Avro支持的压缩编解码器压缩数据。使用Avro压缩时,请避免在阶段中配置任何其他压缩属性。
Binary
该阶段将二进制数据写入记录中的单个字段。
Delimited
为每个分隔的行生成一条记录。您可以使用以下分隔格式类型:

  • Default CSV-包含逗号分隔值的文件。忽略文件中的空行。
  • RFC4180 CSV-严格遵循RFC4180准则的逗号分隔文件。
  • MS Excel CSV -Microsoft Excel逗号分隔文件。
  • MySQL CSV -MySQL逗号分隔文件。
  • Tab-Separated Values -包含制表符分隔的值的文件。
  • PostgreSQL CSV -PostgreSQL逗号分隔文件。
  • PostgreSQL文本 -PostgreSQL文本文件。
  • Custom -使用用户定义的分隔符,转义符和引号字符的文件。
  • Multi Character Delimited-使用多个用户定义的字符分隔字段和行以及单个用户定义的转义和引号字符的文件。
您可以将列表或列表映射根字段类型用于分隔数据,并可以选择在标题行中包括字段名称(如有)。有关根字段类型的更多信息,请参见分隔数据根字段类型。
使用标题行时,可以启用对额外列的记录处理。额外列使用自定义的前缀和顺序递增的顺序整数,如命名 _extra_1, _extra_2。当您禁止额外列时,包含额外列的记录将发送到错误。
您也可以将字符串常量替换为空值。
当一条记录超过为该阶段定义的最大记录长度时,该阶段将根据为该阶段配置的错误处理来处理对象。
JSON
为每个JSON对象生成一条记录。您可以处理包含多个JSON对象或单个JSON数组的JSON文件。
当对象超过为源端定义的最大对象长度时,源端会根据为阶段配置的错误处理来处理对象。
Protobuf
为每个protobuf消息生成一条记录。默认情况下,源端假定消息包含多个protobuf消息。
Protobuf消息必须与指定的消息类型匹配,并在描述符文件中进行描述。
当记录数据超过1 MB时,源端将无法继续处理文件中的数据。源端根据文件错误处理属性处理文件,并继续读取下一个文件。
有关生成描述符文件的信息,请参阅Protobuf数据格式先决条件。
SDC Record
目标以SDC记录数据格式写入记录。
Text
目标端将数据从单个文本字段写入目标系统。配置阶段时,请选择要使用的字段。
您可以配置字符以用作记录分隔符。默认情况下,目标使用UNIX样式的行尾(\ n)分隔记录。
当记录不包含选定的文本字段时,目标端可以将缺少的字段报告为错误或忽略该丢失的字段。默认情况下,目标端报告错误。
当配置为忽略缺少的文本字段时,目标端可以丢弃该记录或写入记录分隔符以为该记录创建一个空行。默认情况下,目标端丢弃记录。
XML
根据用户定义的分隔符元素生成记录。在根元素下直接使用XML元素或定义简化的XPath表达式。如果未定义分隔符元素,则源端会将XML文件视为单个记录。
默认情况下,生成的记录包括XML属性和名称空间声明作为记录中的字段。您可以配置阶段以将它们包括在记录中作为字段属性。
您可以在字段属性中包含每个解析的XML元素和XML属性的XPath信息。这还将每个名称空间放在xmlns记录头属性中。
注意: 只有在目标中使用SDC RPC数据格式时,字段属性和记录头属性才会自动写入目标系统。有关使用字段属性和记录头属性以及如何将它们包括在记录中的更多信息,请参见字段属性和记录头属性。
当记录超过用户定义的最大记录长度时,源端将跳过该记录并继续处理下一条记录。它将跳过的记录发送到管道以进行错误处理。
使用XML数据格式来处理有效的XML文档。有关XML处理的更多信息,请参见阅读和处理XML数据。
提示: 如果要处理无效的XML文档,则可以尝试将文本数据格式与自定义分隔符一起使用。有关更多信息,请参见 使用自定义分隔符处理XML数据。

配置Data Generator处理器

配置Data Generator处理器以将记录序列化为单个字段。

  1. 在“Properties”面板的“General选项卡上,配置以下属性:
    一般属性 描述
    Name 阶段名。
    Description 可选说明。
    Required Fields 必须包含用于将记录传递到阶段的记录的数据的字段。

    提示:您可能包括阶段使用的字段。

    根据为管道配置的错误处理,处理不包括所有必填字段的记录。

    Preconditions 必须评估为TRUE的条件才能使记录进入处理阶段。单击 添加以创建其他前提条件。

    根据为该阶段配置的错误处理,处理不满足所有前提条件的记录。

    On Record Error 该阶段的错误记录处理:

    • Discard-放弃记录。
    • To Error-将记录发送到管道以进行错误处理。
    • Stop Pipeline-停止管道。对群集管道无效。
  2. 在“Generator选项卡上,配置以下属性:
    生成器属性 描述
    Target Field 写入序列化记录时要使用的目标字段。
    Output Type 目标字段的数据类型。
  3. 在“Data Formats选项卡上,配置以下属性:
    数据格式属性 描述
    Data Formats 序列化记录的格式。使用以下选项之一:

    • Avro
    • Binary
    • Delimited
    • JSON
    • Protobuf
    • SDC Record
    • Text
    • XML
  4. 对于Avro数据,在“Data Format选项卡上,配置以下属性:
    Avro属性 描述
    Avro Schema Location 写入数据时要使用的Avro模式定义的位置:

    • In Pipeline Configuration-使用您在阶段配置中提供的架构。
    • In Record Header-在avroSchema 记录头属性中使用架构 。仅在为所有记录定义avroSchema属性时使用。
    • Confluent Schema Registry-从Confluent Schema Registry检索架构。
    Avro Schema 用于写入数据的Avro模式定义。

    您可以选择使用该runtime:loadResource 函数来加载存储在运行时资源文件中的模式定义。

    Register Schema 向Confluent Schema Registry注册新的Avro模式。
    Schema Registry URLs 用于查找模式的Confluent Schema Registry URL。要添加URL,请单击添加,然后以以下格式输入URL:

    http://<host name>:<port number>
    Basic Auth User Info 使用基本身份验证时连接到Confluent Schema Registry所需的用户信息。

    schema.registry.basic.auth.user.info使用以下格式从Schema Registry中的设置中输入密钥和机密 :

    <key>:<secret>
    提示: 要保护敏感信息(例如用户名和密码),可以使用 运行时资源或凭据存储。
    Look Up Schema By 在Confluent Schema Registry中查找模式的方法:

    • Subject-查找指定的Avro模式主题。
    • Schema ID-查找指定的Avro schema ID。
    Schema Subject Avro模式需要在Confluent Schema Registry中查找。

    如果指定的主题具有多个模式版本,则源使用该主题的最新模式版本。要使用旧版本,请找到相应的模式ID,然后将“Look Up Schema By属性设置为“Schema ID”。

    Schema ID 在Confluent Schema Registry中查找的Avro模式ID。
    Include Schema 在每个消息中包含模式。

    注意:省略模式定义可以提高性能,但是需要适当的模式管理,以避免丢失与数据关联的模式的跟踪。
    Avro Compression Codec 要使用的Avro压缩类型。

    使用Avro压缩时,请勿在目标中启用其他可用压缩。

  5. 对于二进制数据,在“Data Format选项卡上,配置以下属性:
    二进制选项 描述
    Binary Field Path 包含二进制数据的字段。
  6. 对于分隔数据,在“Data Format选项卡上,配置以下属性:
    分隔属性 描述
    Delimiter Format 分隔数据的格式:

    • Default CSV-包含逗号分隔值的文件。忽略文件中的空行。
    • RFC4180 CSV-严格遵循RFC4180准则的逗号分隔文件。
    • MS Excel CSV -Microsoft Excel逗号分隔文件。
    • MySQL CSV -MySQL逗号分隔文件。
    • Tab-Separated Values -包含制表符分隔的值的文件。
    • PostgreSQL CSV -PostgreSQL逗号分隔文件。
    • PostgreSQL Text -PostgreSQL文本文件。
    • Custom -使用用户定义的分隔符,转义符和引号字符的文件。
    Header Line 指示是否创建标题行。
    Replace New Line Characters 用配置的字符串替换换行符。

    在将数据写为单行文本时推荐使用。

    New Line Character Replacement 用于替换每个换行符的字符串。例如,输入一个空格以将每个换行符替换为一个空格。

    留空以删除新行字符。

    Delimiter Character 自定义分隔符格式的分隔符。选择一个可用选项,或使用“其他”输入自定义字符。

    您可以输入使用格式为Unicode控制符\uNNNN,其中N是数字0-9或十六进制数字字母A-F。例如,输入\u0000以将空字符用作分隔符,或输入\u2028以将行分隔符用作分隔符。

    默认为竖线字符(|)。

    Escape Character 自定义分隔符格式的转义符。选择一个可用选项,或使用“其他”输入自定义字符。

    默认为反斜杠字符(\)。

    Quote Character 自定义分隔符格式的引号字符。选择一个可用选项,或使用“其他”输入自定义字符。

    默认为引号字符(“”)。

    Charset 写入数据时使用的字符集。
  7. 对于JSON数据,在“Data Format”选项卡上,配置以下属性:
    JSON属性 描述
    JSON Content 写入JSON数据的方法:

    • JSON Array of Objects-每个文件都包含一个数组。在数组中,每个元素都是每个记录的JSON表示形式。
    • Multiple JSON Objects-每个文件包含多个JSON对象。每个对象都是记录的JSON表示形式。
    Charset 写入数据时使用的字符集。
  8. 对于protobuf数据,在“Data Format选项卡上,配置以下属性:
    Protobuf属性 描述
    Protobuf Descriptor File 要使用的描述符文件(.desc)。描述符文件必须位于Data Collector资源目录$SDC_RESOURCES中。

    有关环境变量的更多信息,请参阅《 Data Collector环境配置》。有关生成描述符文件的信息,请参阅Protobuf数据格式先决条件。

    Message Type 写入数据时使用的消息类型的全限定名称。

    使用以下格式: <package name>.<message type>

    使用在描述符文件中定义的消息类型。

  9. 对于文本数据,在“Data Format选项卡上,配置以下属性:
    文本属性 描述
    Text Field Path 包含要写入的文本数据的字段。所有数据必须合并到指定字段中。
    Record Separator 用于分隔记录的字符。使用任何有效的Java字符串文字。例如,当写入Windows时,您可能会\r\n用来分隔记录。

    默认情况下,目标使用 \n

    On Missing Field 当记录不包含文本字段时,确定目标是将丢失的字段报告为错误还是忽略该丢失的字段。
    Insert Record Separator if No Text 当配置为忽略缺少的文本字段时,插入配置的记录分隔符字符串以创建一个空行。

    如果未选择,则丢弃没有文本字段的记录。

    Charset 写入数据时使用的字符集。
  10. 对于XML数据,在“Data Format选项卡上,配置以下属性:
    XML属性 描述
    Pretty Format 添加缩进以使生成的XML文档更易于阅读。相应地增加记录大小。
    Validate Schema 验证生成的XML是否符合指定的模式定义。具有无效模式的记录将根据为目标配置的错误处理进行处理。

    要点:无论是否验证XML模式,目标端都需要特定格式的记录。更多信息,请参见记录结构要求。
    XML Schema 用于验证记录的XML模式。