nifi:捕获文件名的中间部分

cbeh67ev  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(600)

我有许多文件要转到hdfs,命名约定如下:
acme受益人20190820
acme\u统计\u 20190820
acme\u规定\u 20190820
acme\u赞助商\u 20190820
我想使用下划线之间的段作为变量来生成hdfs路径,所以它看起来像这样:
/我的/hdfs/目录/赞助商/2019/
我找到了一种分两步来做这件事的方法,但我想一定有一种方法可以分一步来做。对于第一步,我有一个“update attribute”处理器,它创建一个变量“file\u src”,其值如下:

${filename:substringAfter('_')}

因此,现在它将文件名视为“受益人\u 20190820”,等等。在此之后,我有另一个“更新属性”处理器,其变量名为“dest”,值如下:

${file_src:substringBefore('_'):toLower()}

现在我的hdfs目录可以是这样的:
/我的/hdfs/directory/${dest}/2019
它工作,但感觉笨重。有没有办法一步到位?我觉得这些表达式可能是嵌套的。提前谢谢你的帮助。

tmb3ates

tmb3ates1#

把一切都放在一个表达式中

${filename:substringAfter('_'):substringBefore('_'):toLower()}

您甚至可以在hdfs目录表达式中直接使用此表达式,而无需updateattribute:

/my/hdfs/directory/${filename:substringAfter('_'):substringBefore('_'):toLower()}/2019

相关问题