将属性内的值拆分为多个流文件
Split values inside attribute into multiple flowfiles
我有一个包含空内容和一些属性的流文件。
我对属性 ids
感兴趣。它包含带有 ,
分隔符的 ID 列表。
1018866556,1018878837,1018522766,1018522773,1018522788,1018522790,1018522797,
1018522959,1018522963,1018522968,1018522972,1018522981,1018511143,1018511174
我在InvokeHTTP
处理器中使用这个属性,但有时会因为数据量大而出现错误。
如果发生错误,我想拆分此属性内的值。我应该获取两个流文件而不是一个,每个流文件中的 ID 数量相同(或接近)。
所以,在转换之后我期望:
- Flowfile #1
ids
1018866556,1018878837,1018522766,1018522773,1018522788,1018522790,1018522797
- Flowfile #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
}
我有一个包含空内容和一些属性的流文件。
我对属性 ids
感兴趣。它包含带有 ,
分隔符的 ID 列表。
1018866556,1018878837,1018522766,1018522773,1018522788,1018522790,1018522797,
1018522959,1018522963,1018522968,1018522972,1018522981,1018511143,1018511174
我在InvokeHTTP
处理器中使用这个属性,但有时会因为数据量大而出现错误。
如果发生错误,我想拆分此属性内的值。我应该获取两个流文件而不是一个,每个流文件中的 ID 数量相同(或接近)。
所以,在转换之后我期望:
- Flowfile #1
ids
1018866556,1018878837,1018522766,1018522773,1018522788,1018522790,1018522797
- Flowfile #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
}