SplitText Processor
描述
将文本文件分割为多个较小的文本文件,其行边界受最大行数或片段总大小的限制。 每个输出分割文件将包含不超过配置的行数或字节数。 如果同时指定了“行拆分计数”和“最大片段大小”,则将在首先达到限制时进行拆分。 如果片段的第一行超过最大片段大小,则该行将在单个拆分文件中输出,该文件超出配置的最大大小限制。 该组件还允许指定每个拆分应包含标题行。 可以通过指定构成标题的行数或使用标题标记来匹配读取行来计算标题行。 如果发生这种匹配,则相应的行将被视为标题。 请记住,当头标记匹配第一次失败时,将不再执行任何匹配,并且其余数据将被解析为给定拆分的常规行。 如果在计算标题后没有更多数据,则生成的分割将仅包含标题行。
标签
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| Line Split Count | | 要添加到每个拆分文件的行数,不包括头行。值为零时需要设置最大片段大小,并且在确定拆分时不考虑行数。 | |
| Maximum Fragment Size | | 每个拆分文件的最大大小,包括头行。注意:如果单行超过此属性(包括头行,如果适用),该行将在自己的拆分中输出,超过此最大片段大小设置。 | |
| Header Line Count | 0 | 应被视为标题一部分的行数; 标题行将被复制到所有拆分文件 | |
| 标题行标记字符 | | 数据文件行上表示标题行的首个字符。当标题行计数不为零时,此值将被忽略。第一个不包含标题行标记字符的行及其后的所有行都被视为非标题行 | |
| Remove Trailing Newlines | true |
| 是否移除每个拆分文件末尾的换行符。如果打算稍后合并拆分文件则应设为 false。如果设为 'true' 且生成的 FlowFile 仅包含'空行'(即仅由 \r 和 \n 字符组成),则该 FlowFile 不会被发出。但请注意,如果指定了头行,结果 FlowFile 永远不会为空,因为它将包含头行,因此可能发出仅包含头行的 FlowFile。 |
关系 (Relationships)
| 名称 | 描述 | 自动终止 |
|---|---|---|
failure | 如果由于某种原因无法分割文件,则原始文件将被路由到此目的地,并且不会将任何内容路由到其他地方 | 否 |
original | 当原始输入文件成功分割成 1 个或多个文件后,将被路由到此目的地 | 否 |
splits | 当输入文件成功拆分为 1 个或多个拆分文件时,拆分文件将被路由到此目的地 | 否 |
写入的 FlowFile 属性
| 名称 | 描述 |
|---|---|
text.line.count | 从原始 FlowFile 复制到此 FlowFile 的文本行数 |
fragment.size | 从原始 FlowFile 复制到此 FlowFile 的字节数,包括头部(如果适用),即在每个拆分 FlowFile 中重复的部分 |
fragment.identifier | 从同一父 FlowFile 生成的所有拆分 FlowFile 都将为此属性添加相同的随机生成的 UUID |
fragment.index | 指示从单个父 FlowFile 创建的拆分 FlowFile 顺序的递增编号 |
fragment.count | 从父 FlowFile 生成的拆分 FlowFile 数量 |
segment.original.filename | 父FlowFile的文件名 |
状态管理
该组件不存储状态。
受限 (Restricted)
该组件不受限。
输入要求
该组件要求有传入连接。
系统资源考量
| 资源 | 描述 |
|---|---|
| MEMORY | FlowFile 及其属性存储在内存中,而不是 FlowFile 的内容。如果由于内容大小或内容的拆分配置方式而生成许多拆分,可能需要两阶段方法来避免过度使用内存。 |