Azure Data Lake Storage Gen2

支持的管道类型:

  •  Data Collector

Azure Data Lake Storage Gen2目标端将数据写入Microsoft Azure Data Lake Storage Gen2。您可以在独立和集群批处理管道中使用Azure Data Lake Storage Gen2目标端。若要写入Azure Data Lake Storage Gen1,请使用Azure Data Lake Storage Gen1目标。

使用目标端之前,必须执行一些先决任务。

配置Azure Data Lake Storage Gen2目标端时,可以指定要使用的身份验证方法和相关属性。您定义目录模板和时间基础,以确定目标端创建的输出目录以及写入记录的文件。

您可以定义文件前缀和后缀,数据时区,以及定义目标关闭文件的时间的属性。您可以指定一条记录可以写入其关联目录的时间,以及以后的记录会发生什么。

如果需要,您可以编写记录,使用定义的Avro模式,并根据记录头属性滚动文件。有关更多信息,请参见基于记录的写入的记录头属性。

您可以使用Gzip,Bzip2,Snappy,LZ4和其他压缩格式来写入输出文件。

目标端可以为事件流生成事件。有关事件框架的更多信息,请参见《数据流触发器概述》。

先决条件

在配置Azure Data Lake Storage Gen2目标之前,请完成以下先决条件:

  1. 如有必要,为Data Collector创建一个新的Azure Active Directory应用程序。

    有关创建新应用程序的信息,请参见Azure文档

  2. 确保Azure Active Directory Data Collector应用程序具有适当的访问控制以执行必要的任务。

    Data Collector应用程序需要写和执行权限将数据写入到Azure上。如果还从Azure读取,则该应用程序也需要读取权限。

    有关配置Gen2访问控制的信息,请参见Azure文档

  3. 如有必要,创建一个Azure Data Lake Storage Gen2存储帐户。

    有关创建帐户的信息,请参见Azure文档

  4. 在目标端写入数据的位置创建存储。

    Azure Data Lake Storage Gen2将存储称为文件系统或容器,如Azure文档所述。

    有关创建容器的信息,请参见Azure文档

  5. 从Azure检索信息以配置目标。

完成所有先决条件任务后,可以配置Azure Data Lake Storage Gen2目标。

检索身份验证信息

Azure Data Lake Storage Gen2目标提供了几种方法来验证与Azure的连接。根据您使用的身份验证方法,目标端需要不同的身份验证详细信息。

目标端使用的身份验证信息取决于所选的身份验证方法:

OAuth令牌
使用OAuth令牌身份验证进行的连接需要以下信息:

  • 应用程序ID – Azure Active Directory Data Collector应用程序的应用程序ID 。也称为客户端ID。

    有关从Azure门户访问应用程序ID的信息,请参见Azure文档

  • 身份验证令牌端点 – 用于Data Collector的Azure Active Directory v1.0应用程序的OAuth 2.0令牌端点。例如: https://login.microsoftonline.com/<uuid>/oauth2/token.
  • 应用程序密钥 – Azure Active Directory Data Collector应用程序的身份验证密钥 。也称为客户端密钥。

    有关从Azure门户访问应用程序密钥的信息,请参见Azure文档

Shared Key
使用共享密钥身份验证进行的连接需要以下信息:

  • 帐户共享密钥-Azure为存储帐户生成的共享访问密钥。

    有关从Azure门户访问共享访问密钥的更多信息,请参见Azure文档。

目录模板

默认情况下,Azure Data Lake Storage Gen2目标端使用目录模板创建输出目录。目标端根据配置的时间将记录写入目录。

您也可以根据targetDirectory记录头属性将记录写入目录。使用该 targetDirectory属性将禁用定义目录模板的功能。

定义目录模板时,可以混合使用常量,字段值和日期时间变量。您可以使用 every函数从小时开始,基于小时,分钟或秒,定期创建新目录。您还可以使用record:valueOrDefault函数从字段值或目录模板中的默认值创建新目录。

例如,以下目录模板根据记录的状态和时间戳创建事件数据的输出目录,以小时为最小度量单位,每小时创建一个新目录:

 /outputfiles/${record:valueOrDefault("/State", "unknown")}/${YY()}-${MM()}-${DD()}-${hh()}

您可以在目录模板中使用以下元素:

常数
您可以使用任何常量,例如output
日期时间变量
您可以使用日期时间变量,例如${YYYY()} 或${DD()}。目标根据您使用的最小datetime变量根据需要创建目录。例如,如果最小的变量是hour,那么将在每天的每小时接收输出记录的情况下创建目录。
在表达式中使用日期时间变量时,请使用年份变量之一和要使用的最小变量之间的所有日期时间变量。不要在进度中跳过变量。例如,要每天创建目录,请使用Year变量,month变量和Day变量。您可以使用以下日期时间变量级数之一:
${YYYY()}-${MM()}-${DD()}
${YY()}_${MM()}_${DD()}
有关日期时间变量的详细信息,请参见日期时间变量。
every 函数
您可以使用目录模板中的every函数从小时开始,根据小时,分钟或秒,定期创建目录。间隔应为60的整数或整数倍。例如,您可以每15分钟或30秒创建一个目录。
使用该every函数替换模板中使用的最小datetime变量。
例如,以下目录模板从小时开始每5分钟创建一个目录:

/HDFS_output/${YYYY()}-${MM()}-${DD()}-${hh()}-${every(5,mm())}
有关该every函数的详细信息,请参见其他函数。
record:valueOrDefault 函数
您可以record:valueOrDefault在目录模板中使用该函数来创建具有字段值或指定默认值的目录,如果该字段不存在或该字段为空:

${record:valueOrDefault(<field path>, <default value>)}
例如,以下目录模板Product每天都基于该字段创建一个目录,如果该Product字段为空或为空,则 Misc在目录路径中使用:

/${record:valueOrDefault("/Product", "Misc")}/${YY()}-${MM()}-${DD()}
该模板可能创建以下路径:

/Shirts/2015-07-31 
/Misc/2015-07-31

时间基准

使用目录模板时,时间基准有助于确定何时创建目录。它还可以确定目标在写入记录时使用的目录,以及记录是否延迟。

您可以使用以下时间作为时间基准:

处理时间
使用处理时间作为时间基准时,目标端将根据处理时间和目录模板创建目录,并根据处理时间将记录写入目录。
例如,假设目录模板每分钟创建一次目录,时间基准就是处理时间。然后,为目标写入输出记录的每一分钟创建目录。然后将输出记录写入该分钟的目录中。
要将处理时间用作时间基准,请使用以下表达式:${time:now()}。这是默认的时间基准。
记录时间
当您使用与记录关联的时间作为时间基准时,您可以在记录中指定日期字段。目标根据与记录关联的日期时间创建目录,并将记录写入适当的目录。
例如,假设目录模板每小时创建一个目录,并且时间基础基于记录。然后,为每小时与输出记录关联的目录创建目录,并且目标端将记录写入相关的输出目录。
要使用与记录关联的时间,请使用一个表达式,该表达式调用一个字段并解析为日期时间值,例如 ${record:value("/Timestamp")}

延迟记录和延迟记录处理

使用记录时间作为时间基准时,可以定义将记录写入其关联的输出文件的时间限制。当目标在新目录中创建新的输出文件时,在指定的延迟记录时间限制内,先前的输出文件将保持打开状态。当属于该文件的记录在时限内到达时,目标会将记录写入打开的输出文件。达到延迟记录时间限制后,将关闭输出文件,并且超过此限制的任何记录都将被视为延迟。

提示:如果您使用处理时间作为时间基准,则延迟记录属性不适用。如果您使用处理时间,请将延迟记录时间限制设置为一秒。

您可以将延迟记录发送到延迟记录文件或阶段以进行错误处理。将记录发送到延迟记录文件时,可以定义延迟记录目录模板。

例如,您使用记录时间作为时间基础,配置一小时的延迟记录时间限制,配置延迟的记录以发送到阶段进行错误处理,并使用默认的目录模板值:

/tmp/out/${YYYY()}-${MM()}-${DD()}-${hh()} 

到达的第一条记录的日期时间在02:00到02:59之间,因此被写入02目录中的输出文件。当日期时间在03:00和03:59之间的记录到达时,目标将在03目录中创建一个新文件。目标端将使02目录中的文件打开一个小时。

如果日期时间在02:00和02:59之间的记录在小时时间限制之前到达,则目标将记录写入02目录中的打开文件。一小时后,目标位置将关闭02目录中的输出文件。在一个小时的时间限制之后到达的日期时间在02:00和02:59之间的任何记录都被认为是较晚的。较晚的记录将发送到阶段以进行错误处理。

关闭空闲文件的超时

您可以配置打开的输出文件可以保持空闲的最长时间。在指定的时间内没有记录写入输出文件后,目标端将关闭该文件。

当输出文件保持打开和空闲状态的时间过长时,您可能需要配置空闲超时,从而延迟另一个系统处理文件的时间。

由于以下原因,输出文件可能保持空闲状态的时间过长:

  • 您配置了要写入输出文件的最大记录数或输出文件的最大大小,但是记录已停止到达。未达到最大记录数或最大文件大小的输出文件将保持打开状态,直到更多记录到达为止。
  • 您在记录中配置了一个日期字段作为时间基准,并配置了一个较晚的记录时间限制,但是记录按时间顺序到达。创建新目录后,前一个目录中的输出文件将在配置的最新记录时间限制内保持打开状态。但是,没有记录写入先前目录中的打开文件。

    例如,当到达日期时间为03:00的记录时,目标将在新的03目录中创建一个新文件。02目录中的前一个文件将保持打开状态,以保持最晚记录时间限制,默认情况下为一小时。但是,当记录按时间顺序到达时,创建03目录后,没有任何属于02目录的记录到达。

在这两种情况下,都应配置一个空闲超时,以便其他系统可以更快地处理文件,而不必等待配置的最大记录数、最大文件大小或延迟记录条件发生。

恢复

管道意外停止后,Azure Data Lake Storage Gen2

目标端通过在管道重新启动时重命名临时文件来支持管道意外停止后的恢复。

目标端使用以下格式命名临时打开的输出文件:

_tmp_<prefix>_<runnerId>

其中 <prefix>是为目标端定义的文件前缀,并且<runnerId>是执行管道处理的管道运行器的ID。例如,当目标端前缀被定义为 sdc且通过单线程管道运行目标端时,临时文件像这样命名:_tmp_sdc_0

当目标端关闭文件时,无论是在完全写入文件之后,还是在空闲超时到期之后,或者当您有意停止管道时,它都会重命名文件以删除_tmp_字符串,并使用随机唯一标识符替换管道运行器ID,如下所示:

<prefix>_e7ce67c5-013d-47a7-9496-8c882ddb28a0

但是,当管道意外停止时,将保留临时文件。当管道重新启动时,目标端将扫描已定义目录模板的所有子目录,以重命名与目标端的已定义前缀匹配的所有临时文件。目标端重命名临时文件后,它将继续写入新的输出文件。

注意:目标端将重命名与已定义目录模板的所有子目录中已定义前缀匹配的所有临时文件,即使这些文件不是由该管道写入的也是如此。因此,如果碰巧有另一个文件的名称以相同的模式开头_tmp_<prefix>,目标端也会重命名该文件。

在以下情况下,目标端可能不会重命名所有临时文件:

目录模板包含一个带有record:value或record:valueOrDefault函数的表达式。
如果record:value或record:valueOrDefault函数的计算结果为空字符串或子目录,则当管道重新启动时,目标端无法确定这些位置。结果,目标端无法重命名写入这些位置的任何临时文件。
例如,假设目录模板定义如下:

/tmp/out/${YY()}-${MM()}-${DD()}/${sdc:hostname()}/${record:value('/a')}/${record:value('/b')}
如果表达式的${record:value('/b')}计算结果为空字符串或子目录(例如) /folder1/folder2,则在管道重新启动时,目标端无法确定这些位置。
目录在targetDirectory记录头属性中定义。
在targetDirectory记录头属性中定义目录后,目标端将无法确定管道重新启动时在哪里寻找临时文件。结果,它无法重命名临时文件。

在这两种情况下,您都必须手动重命名临时文件。

文件恢复会在重新启动时减缓管道的速度。如果需要,可以将目标配置为跳过文件恢复。

事件生成

Azure Data Lake Storage Gen2目标端可以生成可在事件流中使用的事件。启用事件生成后,每次目标端完成写入输出文件或完成流式传输整个文件时,Azure Data Lake Storage Gen2目标端都会生成事件记录。

可以以任何逻辑方式使用事件。例如:

  • 使用ADLS Gen2文件元数据执行程序更改文件元数据,创建空文件或在关闭文件后删除文件或目录。

    有关类似用例的示例,请参见案例研究:输出文件管理。

  • 使用电子邮件执行程序在收到事件后发送自定义电子邮件。

    有关示例,请参阅案例研究:发送电子邮件。

  • 具有用于存储事件信息的目标端。

    有关示例,请参见案例研究:事件存储。

有关数据流触发器和事件框架的更多信息,请参见数据流触发器概述。

事件记录

Azure Data Lake Storage Gen2

目标端事件记录包括以下与事件相关的记录头属性。记录头属性存储为字符串值。

记录头属性 描述
sdc.event.type 事件类型。使用以下类型之一:

  • file-closed-在目标关闭文件时生成。
  • wholeFileProcessed-在目标端完成流式传输整个文件时生成。
sdc.event.version 整数,指示事件记录类型的版本。
sdc.event.creation_timestamp 阶段创建事件的时间戳记。

目标端可以生成以下类型的事件记录:

File closure
当目标端关闭输出文件时,它将生成文件关闭事件记录。
文件关闭事件记录的 sdc.event.type记录头属性设置为file-closed,包括以下字段:

字段 描述
filepath 已关闭文件的绝对路径。
filename 关闭文件的文件名。
length 关闭文件的大小(以字节为单位)。
Whole file processed
目标端在完成流式传输整个文件时会生成一个事件记录。整个文件事件记录的 sdc.event.type记录头属性设置为,wholeFileProcessed并且具有以下字段:

字段 描述
sourceFileInfo 关于已处理的原始整个文件的属性映射。这些属性包括:

  • size-整个文件的大小(以字节为单位)。

其他属性取决于原始系统提供的信息。

targetFileInfo 关于写入目标端的整个文件的属性映射。这些属性包括:

  • path-处理后的整个文件的绝对路径。
checksum 为写入文件生成的校验和。

仅当您将目标端配置为在事件记录中包括校验和时才包括。

checksumAlgorithm 用于生成校验和的算法。

仅当您将目标配置端为在事件记录中包括校验和时才包括。

数据格式

Azure Data Lake Storage Gen1目标根据您选择的数据格式将数据写入Azure Data Lake Storage Gen1。您可以使用以下数据格式:

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

    如果在阶段或记录头属性中使用Avro模式,则可以选择配置目标以向Confluent Schema Registry注册Avro模式。

目标端在每个文件中都包含模式定义。
您可以使用Avro支持的压缩编解码器压缩数据。使用Avro压缩时,请避免在目标端使用其他压缩属性。
Binary
该阶段将二进制数据写入记录中的单个字段。
Delimited
目标端将记录写为分隔数据。使用此数据格式时,根字段必须是list或list-map。

您可以使用以下分隔格式类型:

  • 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-使用多个用户定义的字符分隔字段和行以及单个用户定义的转义和引号字符的文件。
JSON
目标端将记录写为JSON数据。您可以使用以下格式之一:

  • Array-每个文件都包含一个数组。在数组中,每个元素都是每个记录的JSON表示形式。
  • Multiple objects-每个文件都包含多个JSON对象。每个对象都是一条记录的JSON表示形式。
Protobuf
在每个文件中写入一批消息。
在描述符文件中使用用户定义的消息类型和消息类型的定义来在文件中生成消息。
有关生成描述符文件的信息,请参阅Protobuf数据格式先决条件。
SDC Record
目标端以SDC记录数据格式写入记录。
Text
目标端将数据从单个文本字段写入目标系统。配置阶段时,请选择要使用的字段。
您可以配置字符以用作记录分隔符。默认情况下,目标使用UNIX样式的行尾(\n)分隔记录。
当记录不包含选定的文本字段时,目标端可以将缺少的字段报告为错误或忽略该丢失的字段。默认情况下,目标端报告错误。
当配置为忽略缺少的文本字段时,目标端可以丢弃该记录或写入记录分隔符以为该记录创建一个空行。默认情况下,目标端丢弃记录。
Whole File
将整个文件流式传输到目标系统。目标端将数据写入阶段中定义的文件和位置。如果已经存在相同名称的文件,则可以将目标端配置为覆盖现有文件或将当前文件发送给错误文件。
写入的文件使用目标系统中定义的默认权限。
您可以配置目标端以生成写入文件的校验和,并将校验和信息传递到事件记录中的目标系统。
有关整个文件数据格式的更多信息,请参见整个文件数据格式。

配置Azure Data Lake Storage Gen2目标端

配置Azure Data Lake Storage Gen2目标端以将数据写入Azure Data Lake Storage Gen2。在配置目标之前,请确保完成必要的先决条件。

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

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

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

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

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

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

    • Discard-放弃记录。
    • To Error-将记录发送到管道以进行错误处理。
    • Stop Pipeline-停止管道。对集群管道无效。
  2. 在“Data Lake选项卡上,配置以下属性:
    数据湖属性 描述
    Account FQDN Azure Data Lake Storage Gen2帐户的主机名。例如:

    <storage account name>.dfs.core.windows.net
    Storage Container / File System

    目标端写入数据的存储容器或文件系统的名称。

    Authentication Method

    用于连接到Azure的身份验证方法:

    • OAuth Token
    • Shared Key
    Application ID Azure Active Directory Data Collector应用程序的应用程序ID 。也称为客户端ID。

    有关从Azure门户访问应用程序ID的信息,请参见Azure文档

    使用OAuth令牌身份验证方法时可用。

    Auth Token Endpoint 用于Data Collector的Azure Active Directory v1.0应用程序的OAuth 2.0令牌终结点。例如: https://login.microsoftonline.com/<uuid>/oauth2/token.

    使用OAuth令牌身份验证方法时可用。

    Application Key Azure Active Directory Data Collector应用程序的身份验证密钥 。也称为客户端密钥。

    有关从Azure门户访问应用程序密钥的信息,请参见Azure文档

    使用OAuth令牌身份验证方法时可用。

    Account Shared Key Azure为存储帐户生成的共享访问密钥。

    有关从Azure门户访问共享访问密钥的更多信息,请参见Azure文档

    使用共享密钥身份验证方法时可用。

    Advanced Configuration

    要传递给基础文件系统的其他HDFS属性。ADLS Gen2使用Hadoop FileSystem接口访问数据。指定的属性将覆盖Hadoop配置文件中的属性。

    要添加属性,请单击“添加”图标并定义HDFS属性名称和值。使用Hadoop期望的属性名称和值。

  3. 在“Output Files选项卡上,配置以下属性:
    输出文件属性 描述
    File Type 输出文件类型:

    • Text files
    • Sequence files
    • Whole files-使用整个文件数据格式时选择。
    Files Prefix 用于输出文件的前缀。写入从其他来源接收文件的目录时使用。

    sdc-${sdc:id()}默认情况下使用前缀。前缀的计算结果为。sdc-<Data Collector ID>

    数据采集器 ID存储在以下文件: $SDC_DATA/sdc.id有关环境变量的更多信息,请参阅《Data Collector环境配置》。

    Files Suffix 用于输出文件的后缀,例如 txtjson。使用时,目标端将添加一个句点和配置的后缀,如下所示: <filename>.<suffix>

    您可以在后缀中包括句点,但不要以句点开头。不允许使用正斜杠。

    不适用于整个文件数据格式。

    Directory in Header 指示在记录头中定义了目标目录。仅在为所有记录定义了targetDirectory头属性时使用。
    Directory Template 用于创建输出目录的模板。您可以使用常量,字段值和日期时间变量。

    输出目录是基于模板中最小的datetime变量创建的。

    Data Time Zone 目标系统的时区。用于解析目录模板中的日期时间并评估记录的写入位置。
    Time Basis 用于创建输出目录并将记录写入目录的时间基准。使用以下表达式之一:

    • ${time:now()} -使用处理时间作为时间基准。
    • ${record:value(<date field path>)} -使用与记录关联的时间作为时间基准。
    Max Records in File 写入输出文件的最大记录数。其他记录将写入新文件。

    使用0退出此属性。

    使用整个文件数据格式时不可用。

    Max File Size (MB) 输出文件的最大大小。其他记录将写入新文件。

    使用0退出此属性。

    使用整个文件数据格式时不可用。

    Idle Timeout 输出文件可以保持空闲状态的最长时间。在这段时间内没有任何记录写入文件后,目标位置将关闭文件。输入以秒为单位的时间,或在表达式中使用MINUTES或 HOURS常数来定义时间增量。

    使用-1设置无限制。默认值为1小时,定义如下:${1 * HOURS}

    使用整个文件数据格式时不可用。

    Compression Codec 输出文件的压缩类型:

    • None
    • gzip
    • bzip2
    • Snappy
    • LZ4
    • Other
    注意:请勿使用Avro数据。若要压缩Avro数据,请使用“Data Formats”选项卡上的“Avro Compression Codec”属性。
    Use Roll Attribute 检查记录头是否包含roll header属性,并在存在roll属性时关闭当前文件。

    可以与“Max Records”和“Max File Size”一起使用以关闭文件。

    Roll Attribute Name 滚动头属性的名称。

    默认为roll。

    Validate Permissions 启动管道时,目标端将尝试写入配置的目录模板以验证权限。如果验证失败,则管道不会启动。

    注意:当目录模板使用表达式表示整个目录时,请勿使用此选项。
    Skip File Recovery 确定在管道意外停止后目标是否执行文件恢复。
  4. 在“Data Format选项卡上,配置以下属性:
    数据格式属性 描述
    Data Format 要写入的数据格式。使用以下选项之一:

    • Avro
    • Binary
    • Delimited
    • JSON
    • Protobuf
    • SDC Record
    • Text
    • Whole File
  5. 对于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 汇合的模式注册表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模式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压缩时,请勿在目标中启用其他可用压缩。

  6. 对于二进制数据,在“Data Format选项卡上,配置以下属性:
    二进制属性 描述
    Binary Field Path 包含二进制数据的字段。
  7. 对于分隔数据,在“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 -使用用户定义的分隔符,转义符和引号字符的文件。
    • Multi Character Delimited-使用多个用户定义的字符分隔字段和行以及单个用户定义的转义和引号字符的文件。
    Header Line 指示是否创建标题行。
    Replace New Line Characters 用配置的字符串替换换行符。

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

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

    留空以删除新行字符。

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

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

    默认为竖线字符(|)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Charset 写入数据时使用的字符集。
  11. 对于整个文件,在“Data Format选项卡上,配置以下属性:
    整个文件属性 描述
    File Name Expression

    用于文件名的表达式。

    有关如何根据输入文件名命名文件的提示,请参阅“写整个文件”。

    File Exists 当输出目录中已经存在同名文件时采取的措施。使用以下选项之一:

    • Send to Error-根据阶段错误记录处理来处理记录。
    • Overwrite-覆盖现有文件。
    Include Checksum in Events 在整个文件事件记录中包括校验和信息。

    仅在目标端生成事件记录时使用。

    Checksum Algorithm 生成校验和的算法。
  12. 在“Late Records选项卡上,配置以下属性:
    后期记录属性 描述
    Late Record Time Limit (secs) 输出目录接受数据的时间限制。

    您可以输入以秒为单位的时间,或使用表达式输入以小时为单位的时间。您还可以在默认表达式中使用MINUTES来定义时间(以分钟为单位)。

    Late Record Handling 确定如何处理最新记录:

    • Send to error-将记录发送到阶段以进行错误处理。
    • Send to late records file-将记录发送到最新记录文件。
    Late Record Directory Template 用于创建最新记录目录的模板。您可以使用常量,字段值和日期时间变量。

    输出目录是基于模板中最小的datetime变量创建的。