nifi:updateattribute更改文件名

f0ofjuux  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(554)

我使用gethttps-->updateattribute-->puthdfs流,以便每隔30秒从api读取json文件,并将文件放入hdfs中。第二步用当前日期/时间戳更改filename属性,这样我们就不会有相同的文件名冲突。
我已经试过了: ${filename: prepend(${now():format("yyyy-MM-dd-HH:mm:ss")})} 从而导致:
错误:由于java.lang.illegalargumentexception:java.net,puthdfs无法写入hdfs。urisyntaxexception:绝对uri中的相对路径:.2017-08-01-11:01:13-filename.json
老实说,我不确定这个错误是从哪里来的,另外,根据文件名前面的表达式,错误消息中创建的文件名的日期之前有一个点(.),不应该出现。在第二步中没有任何文件名操作,一切都正常工作。感谢您的帮助,谢谢!

ecbunoof

ecbunoof1#

你有一个无效字符':'
更改时间中的分号(:)。
试试这个,
${filename:prepend(${now():format(“yyyy-mm-dd hh-mm-ss”)}

w80xi6nr

w80xi6nr2#

您的问题显示文件名包含一些无效字符,可能是“.”或“:”。
必须使用下面的表达式来存储带有文件名的毫秒。

${filename:prepend(${now():toNumber()})}

将日期转换为毫秒的数字。
如果你想的话也可以这样储存。

${filename:prepend(${now():format("yyyy-MM-dd-HH-mm-ss")})}

或者可以使用uuid()作为文件名的前缀。
https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#uuid

相关问题