我有许多文件要转到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
它工作,但感觉笨重。有没有办法一步到位?我觉得这些表达式可能是嵌套的。提前谢谢你的帮助。
1条答案
按热度按时间tmb3ates1#
把一切都放在一个表达式中
您甚至可以在hdfs目录表达式中直接使用此表达式,而无需updateattribute: