阶段事件生成

您可以配置某些阶段来生成事件。根据阶段处理数据的方式,事件的生成因阶段而异。有关每个阶段的每个事件生成的详细信息,请参见阶段文档中的“事件生成”。

下表列出了事件生成阶段以及它们何时可以生成事件:

阶段 当阶段…时生成事件
Amazon S3源
  • 完成所有可用对象的处理,并且已配置的批处理等待时间已经过去。

有关更多信息,请参阅Amazon S3源的事件生成。

Azure Data Lake Storage Gen1源
  • 开始处理文件。
  • 完成处理文件。
  • 完成所有可用文件的处理,并且已配置的批处理等待时间已经过去。

有关更多信息,请参见Azure Data Lake Storage Gen1源的事件生成。

Azure Data Lake Storage Gen2源
  • 开始处理文件。
  • 完成处理文件。
  • 完成所有可用文件的处理,并且已配置的批处理等待时间已经过去。

有关更多信息,请参见Azure Data Lake Storage Gen2源的事件生成。

Directory源
  • 开始处理文件。
  • 完成处理文件。
  • 完成所有可用文件的处理,并且已配置的批处理等待时间已经过去。

有关更多信息,请参见Directory源的事件生成。

File Tail源
  • 开始处理文件。
  • 完成处理文件。

有关更多信息,请参见File Tail源的事件生成。

Google BigQuery源
  • 成功完成查询。

有关更多信息,请参阅Google BigQuery源的事件生成。

Google Cloud Storage源
  • 完成所有可用对象的处理,并且已配置的批处理等待时间已经过去。

有关更多信息,请参阅Google Cloud Storage源的事件生成。

Groovy脚本起源
  • 运行生成事件的脚本。

有关更多信息,请参见Groovy脚本起源的事件生成。

Hadoop FS Standalone源
  • 开始处理文件。
  • 完成处理文件。
  • 完成所有可用文件的处理,并且已配置的批处理等待时间已经过去。

有关更多信息,请参阅Hadoop FS Standalone源的事件生成。

JavaScript Scripting源
  • 运行生成事件的脚本。

有关更多信息,请参见JavaScript Scripting源的事件生成。

JDBC Multitable Consumer源
  • 完成对所有表的查询返回的数据的处理。

有关更多信息,请参见JDBC Multitable Consumer源的事件生成。

JDBC Query Consumer源
  • 完成处理查询返回的所有数据。
  • 成功完成查询。
  • 无法完成查询。

有关更多信息,请参见JDBC Query Consumer源的事件生成。

Jython Scripting源
  • 运行生成事件的脚本。

有关更多信息,请参见Jython Scripting源的事件生成。

MapR FS Standalone源
  • 开始处理文件。
  • 完成处理文件。
  • 完成所有可用文件的处理,并且已配置的批处理等待时间已经过去。

有关更多信息,请参阅MapR FS Standalone源的事件生成。

MongoDB源
  • 完成处理查询返回的所有数据。

有关更多信息,请参阅MongoDB源的事件生成。

Oracle Bulkload源
  • 完成表中的数据处理。

有关更多信息,请参见Oracle Bulkload源的事件生成。

Oracle CDC Client源
  • 读取重做日志中的DDL语句。

有关更多信息,请参见Oracle CDC Client源的事件生成。

Salesforce源
  • 完成处理查询返回的所有数据。

有关更多信息,请参阅为Salesforce源生成事件。

SFTP/FTP/FTPS Client源
  • 开始处理文件。
  • 完成处理文件。
  • 完成所有可用文件的处理,并且已配置的批处理等待时间已经过去。

有关更多信息,请参见SFTP/FTP/FTPS Client源的事件生成。

SQL Server 2019 BDC Multitable Consumer源
  • 完成对所有表的查询返回的数据的处理。

有关详细信息,请参阅SQL Server 2019 BDC Multitable Consumer源的事件生成。

SQL Server CDC Client源
  • 完成处理关联的CDC表中的数据。
  • 启用检查模式更改时,源在每次检测到模式更改时都会生成一个事件。

有关更多信息,请参见SQL Server CDC Client源的事件生成。

SQL Server Change Tracking源
  • 完成所有指定变更跟踪表中的数据处理。

有关更多信息,请参见SQL Server Change Tracking源的事件生成。

Teradata Consumer源
  • 完成对所有表的查询返回的数据的处理。

有关更多信息,请参阅Teradata Consumer源的事件生成。

Windowing Aggregator处理器
  • 根据配置的窗口类型和时间窗口执行聚合。

有关更多信息,请参见Windowing Aggregator处理器的事件生成。

Groovy Evaluator处理器
  • 运行生成事件的脚本。

有关更多信息,请参见Groovy Evaluator处理器的事件生成。

JavaScript Evaluator处理器
  • 运行生成事件的脚本。

有关更多信息,请参见JavaScript Evaluator处理器的事件生成。

Jython Evaluator处理器
  • 运行生成事件的脚本。

有关更多信息,请参见Jython Evaluator处理器的事件生成。

TensorFlow Evaluator处理器
  • 一次评估整个批次。

有关更多信息,请参阅TensorFlow Evaluator处理器的事件生成。

Amazon S3目标端
  • 完成写入对象。
  • 完成流式传输整个文件。

有关更多信息,请参阅Amazon S3目标端的事件生成。

Azure Data Lake Storage(Legacy)目标端
  • 关闭文件。
  • 完成流式传输整个文件。

有关更多信息,请参见Azure数据湖存储(旧版)目标端的事件生成。

Azure Data Lake Storage Gen1目标端
  • 关闭文件。
  • 完成流式传输整个文件。

有关更多信息,请参见Azure Data Lake Storage Gen1目标端的事件生成。

Azure Data Lake Storage Gen2目标端
  • 关闭文件。
  • 完成流式传输整个文件。

有关更多信息,请参见Azure Data Lake Storage Gen2目标端的事件生成。

Google Cloud Storage目标端
  • 完成写入对象。
  • 完成流式传输整个文件。

有关更多信息,请参阅Google Cloud Storage目标端的事件生成。

Hadoop FS目标端
  • 关闭文件。
  • 完成流式传输整个文件。

有关更多信息,请参阅Hadoop FS目标端的事件生成。

Hive Metastore目标端
  • 通过创建表,添加列或创建分区来更新Hive Metastore。
  • 生成并写入新的Avro模式文件。

有关更多信息,请参见Hive Metastore目标端的事件生成。

本地FS目标端
  • 关闭文件。
  • 完成流式传输整个文件。

有关更多信息,请参阅本地FS目标端的事件生成。

MapR FS目标端
  • 关闭文件。
  • 完成流式传输整个文件。

有关更多信息,请参阅MapR FS目标端的事件生成。

SFTP/FTP/FTPS Client目标端
  • 关闭文件。
  • 完成流式传输整个文件。

有关更多信息,请参见SFTP/FTP/FTPS Client目标端的事件生成。

ADLS Gen1 File Metadata执行器
  • 更改文件元数据,例如文件名,位置或权限。
  • 创建一个空文件。
  • 删除文件或目录。

有关更多信息,请参见ADLS Gen1 File Metadata执行器的事件生成。

ADLS Gen2 File Metadata执行器
  • 更改文件元数据,例如文件名,位置或权限。
  • 创建一个空文件。
  • 删除文件或目录。

有关更多信息,请参见ADLS Gen2 File Metadata执行器的事件生成。

Amazon S3执行器
  • 创建一个新的Amazon S3对象。
  • 将对象复制到另一个位置。
  • 将标签添加到现有对象。

有关更多信息,请参阅Amazon S3执行器的事件生成。

Databricks执行器
  • 开始Databricks作业。

有关更多信息,请参见Databricks执行器的事件生成。

HDFS File Metadata执行器
  • 更改文件元数据,例如文件名,位置或权限。
  • 创建一个空文件。
  • 删除文件或目录。

有关更多信息,请参见HDFS File Metadata执行器的事件生成。

配置单元查询执行器
  • 确定提交的查询成功完成。
  • 确定提交的查询未能完成。

有关更多信息,请参见Hive Query执行程序的事件生成。

JDBC Query执行器
  • 确定提交的查询成功完成。
  • 确定提交的查询未能完成。

有关更多信息,请参见JDBC Query执行器的事件生成。

MapR FS File Metadata执行器
  • 更改文件元数据,例如文件名,位置或权限。
  • 创建一个空文件。
  • 删除文件或目录。

有关更多信息,请参见MapR FS File Metadata执行器的事件生成。

MapReduce执行器
  • 启动MapReduce作业。

有关更多信息,请参见MapReduce执行器的事件生成。

Spark执行器
  • 启动一个Spark应用程序。

有关更多信息,请参见Spark执行器的事件生成。

使用阶段事件

您可以按照自己的需要使用与阶段相关的事件。在为阶段事件配置事件流时,可以向流中添加其他阶段。例如,您可以使用Stream Selector将不同类型的事件路由到不同的执行程序。但是您不能将事件流与数据流合并。

您可以创建两种一般类型的事件流:

  • 任务执行流将事件路由到执行者以执行任务。

    在Data Collector Edge管道中不可用。 Data Collector Edge管道不支持执行器。

  • 事件存储流将事件路由到目标端以存储事件信息。

当然,您可以通过将事件记录同时路由到执行器和目标端来配置执行两个任务的事件流。您还可以根据需要配置事件流,以将数据路由到多个执行器和目标端。

任务执行流

任务执行流将事件记录从事件生成阶段路由到执行器阶段。执行程序每次接收到事件记录时都会执行任务。

在Data Collector Edge管道中,不能使用任务执行流。Data Collector Edge管道不支持执行

例如,您有一个从Kafka读取并将文件写入HDFS的管道:

当Hadoop FS关闭文件时,您希望将文件移动到其他目录,并且文件权限更改为只读。

保留其余管道,您可以在Hadoop FS目标端中启用事件处理,将其连接到HDFS File Metadata executor,并将HDFS File Metadata executor配置为文件并更改权限。产生的管道如下所示:

如果需要根据文件名或位置不同地设置权限,则可以使用Stream Selector相应地路由事件记录,然后使用两个HDFS File Metadata执行器来更改文件权限,如下所示:

事件存储流

事件存储流将事件记录从事件生成阶段路由到目标端。目标端将事件记录写入目标系统。

事件记录在记录头属性和记录字段中包含有关事件的信息。您可以在事件流中添加处理器以丰富事件记录,然后再将其写入目标端。

例如,您有一个使用Directory源来处理Weblog的管道:

Directory每次启动并完成读取文件时都会生成事件记录,并且事件记录包括一个带有文件的文件路径的字段。出于审计目的,您希望将此信息写入数据库表。

保留其余的管道,可以为Directory源启用事件处理,并只需将其连接到JDBC Producer,如下所示:

但是您想知道事件何时发生。Directory事件记录将事件创建时间存储在sdc.event.creation_timestamp记录头属性中。因此,您可以将Expression Evaluator与以下表达式配合使用,以将创建日期和时间添加到记录中:

${record:attribute('sdc.event.creation_timestamp')}
而且,如果您有多个将事件写入同一位置的管道,则可以使用以下表达式在事件记录中也包括管道名称:

${pipeline:name()}

Expression Evaluator和最终管道如下所示: