SampleRecord

文档中心 › 组件索引 › SampleRecord

SampleRecord Processor

类型全限定名:cn.org.acal.lynxus.processors.standard.SampleRecord

所属 Bundle:cn.org.acal.lynxus:lynxus-standard-nar:2.11.8

描述

基于指定的采样策略(如水库采样)对 FlowFile 的记录进行采样。

标签

recordsamplereservoirrangeinterval

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
Record Reader控制器服务 API:
RecordReaderFactory
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
指定用于解析传入数据并确定数据模式的 Controller Service
Record Writer控制器服务 API:
RecordSetWriterFactory
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
指定用于将结果写入 FlowFile 的Controller Service
Sampling Strategyreservoir
  • Interval Sampling — 选取每第 N 条记录,其中 N 是 'Interval Value' 属性的值
  • Range Sampling — 根据记录的索引(即记录编号)使用指定范围创建记录样本。例如 '3,6-8,20-' 包含第 3 条记录、第 6、7、8 条记录,以及从第 20 条开始的所有记录。逗号分隔不重叠的区间,区间可以是两个数字之间(即 6-8)、直到某个给定数字(即 -5),或从某个数字到最后一条记录的编号(即 20-)。
  • Probabilistic Sampling — 以概率 P 选取每条记录,其中 P 是 'Selection Probability' 属性的值
  • Reservoir Sampling — 创建 K 条记录的样本,其中每条记录被包含的概率相等,K 是 'Reservoir Size' 属性的值。请注意,如果该值非常大,可能会导致内存问题,因为蓄水池(reservoir)保存在内存中。
指定使用哪种方法对传入 FlowFile 中的记录进行采样
Sampling Interval指定在将记录写入输出 FlowFile 之前要跳过的记录数量。此属性仅在采样策略设置为间隔采样时使用。值为零 (0) 将导致没有记录包含在输出 FlowFile 中,值为一 (1) 将导致所有记录都包含在内,值为二 (2) 将导致一半的记录包含在内,依此类推。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Sampling Range指定要包含在样本中的记录范围,从 1 到记录总数。例如 '3,6-8,20-' 包含第三条记录、第六、第七和第八条记录,以及从第二十条记录开始的所有记录。逗号分隔不重叠的区间,区间可以是两个数字之间(即 6-8)或到给定数字(即 -5),或从数字到最后一条记录(即 20-)。如果未设置此属性,则包含所有记录。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Sampling Probability指定记录被包含在输出 FlowFile 中的概率(以 0-100 的百分比表示)。此属性仅在采样策略设置为概率采样时使用。值为零 (0) 将导致没有记录包含在输出 FlowFile 中,值为 100 将导致所有记录都包含在输出 FlowFile 中。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Reservoir Size指定要写入输出 FlowFile 的记录数量。此属性仅在采样策略设置为基于蓄水池的策略(如蓄水池采样)时使用。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Random Seed指定一个特定数字用作随机数生成器的种子(由概率策略使用)。设置此属性将确保即使使用概率策略也能选择相同的记录。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)

关系 (Relationships)

名称描述自动终止
failure如果 FlowFile 因任何原因处理失败(例如,任何记录无效),原始 FlowFile 将被路由到此关系否
original如果采样成功,原始 FlowFile 将路由到此关系是
success如果采样成功完成,则 FlowFile 将路由到此关系是

写入的 FlowFile 属性

名称描述
mime.type记录编写者指示的 MIME 类型
record.count生成的 FlowFile 中的记录数

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

输入要求

该组件要求有传入连接。

系统资源考量

资源描述
MEMORYAn instance of this component can cause high usage of this system resource. Multiple instances or high concurrency settings may result a degradation of performance.

详细说明

SampleRecord

此 Processor 接收一个 Record 集合,并按照指定的抽样策略从集合中抽取记录。可用的抽样策略有:

  • Interval Sampling(间隔抽样)

    根据 Sampling Interval 属性的值,每隔 N 条记录选取一条。例如,集合中有 100 条记录, Sampling Interval 设为 4,则输出为 25 条记录,即每隔 4 条选取的那一条。该方式对记录集合做 均匀抽样,因此最适合本身分布均匀的记录集合。例如,表示均匀分布用户信息的记录集合,其输出记录 也会是均匀分布的。输出记录数是确定性的,恰好等于记录总数除以 Sampling Interval 的值。

  • Probabilistic Sampling(概率抽样)

    以概率 P 独立选取每条记录,P 是由 Sampling Probability 值指定的整数百分比。例如,输入 100 条记录、Sampling Probability 为 20 时,输出大约有 20 条记录。当你希望输出规模大致相同 (但不要求精确)的记录集合,并且希望每条记录被选中的"机会"均等时,请使用此策略。再举一个例子: 如果把同一个 FlowFile 两次送入该 Processor,Interval Sampling 策略每次都会产生相同的输出, 而 Probabilistic Sampling 可能输出不同的记录(总条数也可能不同)。

  • Reservoir Sampling(蓄水池抽样)

    从共 N 条记录的集合中选取 K 条,其中 K 是 Reservoir Size 属性的值,且每条记录被选中 的概率相等(恰好为 K / N)。例如,输入 100 条记录、Reservoir Size 为 20 时,输出恰好是 从输入记录集合中随机选取的 20 条记录。当你需要精确控制输出记录数,并且希望每条输入记录被选中 的概率相等时,请使用此策略。同样以两次送入同一个 FlowFile 为例:Interval Sampling 总是产生 相同的输出(相同的记录和数量),Probabilistic Sampling 可能输出不同的记录(总条数也可能不同), 而 Reservoir Sampling 可能输出不同的记录,但总条数保持不变。注意蓄水池保存在内存中,如果 蓄水池尺寸非常大,可能会引发内存问题。

"Random Seed" 属性适用于使用伪随机数生成器的策略/算法,例如 Probabilistic Sampling 和 Reservoir Sampling。该属性是可选的,但设置后可以保证每次对同一个 FlowFile 都选取相同的记录。 这对于测试使用非确定性算法(如 Probabilistic Sampling 和 Reservoir Sampling)的流程很有用。