apache-nifi - 将属性内的值拆分为多个流文件
问题描述
我有一个包含空内容和一些属性的流文件。
我对属性感兴趣ids
。,
它包含带有分隔符的 id 列表。
1018866556,1018878837,1018522766,1018522773,1018522788,1018522790,1018522797,
1018522959,1018522963,1018522968,1018522972,1018522981,1018511143,1018511174
我在InvokeHTTP
处理器中使用此属性,但有时由于数据量大而出现错误。
如果发生错误,我想拆分此属性内的值。我应该得到两个流文件,而不是一个在每个流文件中具有相同(或接近)数量的 id。
所以,经过改造,我期望:
- 流文件#1
ids
1018866556,1018878837,1018522766,1018522773,1018522788,1018522790,1018522797
- 流文件#2
ids
1018522959,1018522963,1018522968,1018522972,1018522981,1018511143,1018511174
如果仍然出现错误,则再次拆分它们,等等......就像二进制搜索但没有排序。
如何到达?
解决方案
ExecuteGroovyScript
处理器脚本:
def ff=session.get()
if(!ff)return
def idList = ff.ids?.split(',')
if ( idList.size()>1 ){
def sublistSize = (idList.size()/2).round() as int
def ffList = idList.collate(sublistSize).collect{sublist->
ffOut = ff.clone(true)
ffOut.ids = sublist.join(',')
ffOut
}
REL_SUCCESS << ffList
ff.remove()
}else{
REL_SUCCESS << ff
}
推荐阅读
- python - mysql 表没有更新表 - python mysql-connector
- swift - 我在“过滤器”上遇到错误,但在“for”上却没有。为什么??(错误:编译器无法在合理的时间内对这个表达式进行类型检查')
- wordpress - Wordpress 重复页面在 url 中有多个破折号
- postgresql - 如何在postgres中使用印度货币格式的cash_words函数将数字转换为单词
- javascript - 服务器发送事件(Laravel)没有将我的内容发送到客户端
- javascript - 加载页面时如何使 cdbreact 侧边栏保持关闭状态
- python - 使用 Pandas Python 组合多个数据表
- javascript - JS 正则表达式正面向后看不匹配
- kotlin - 如何从活动中访问数据类对象?
- jenkins - Jenkins - 在同一视图中显示多个多分支管道的所有主分支