SampleRecord Processor
描述
基于指定的采样策略(如水库采样)对 FlowFile 的记录进行采样。
标签
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| Record Reader | | 控制器服务 API:RecordReaderFactorycn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 指定用于解析传入数据并确定数据模式的 Controller Service |
| Record Writer | | 控制器服务 API:RecordSetWriterFactorycn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 指定用于将结果写入 FlowFile 的Controller Service |
| Sampling Strategy | 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)
该组件不受限。
输入要求
该组件要求有传入连接。
系统资源考量
| 资源 | 描述 |
|---|---|
| MEMORY | An 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)的流程很有用。