我们有一个用例将10 M行的文件分成每个10000的小文件。我们计划使用SpringXD。我们正面临以下问题:
stream create --name fileTestDirExp --definition "file --outputType=text/plain --dir=/Documents --pattern=createdTest.txt --mode=lines --maxMessages=5000 | aggregator --aggregation=#this.![payload] --count=10000 --release='#this.size() eq 10000' |sink:file --dirExpression='''/Documents/splitter/''+new java.text.SimpleDateFormat(''yyyyMMdd'').format(new java.util.Date()).toString()' --nameExpression='headers[''id'']+''.txt'''" --deploy
对于解决上述问题的任何帮助表示赞赏。
此致 KARTHIK
答案 0 :(得分:0)
您通过rabbitmq发送每一行。考虑将file | aggregator
组合成一个组合模块,以便它们位于同一位置,只有聚合数据通过Rabbit传输。
聚合器发出List<String>
;所以我不知道如何将其写入文件接收器;它只接受String
,byte[]
或File
类型的有效负载。
您需要一个自定义转换器将列表转换为单个字符串,或添加另一个拆分器(由文件接收器组成)并使用追加模式。