NiFi:UpdateAttribute更改文件名

bal*_*ika 4 hadoop apache-nifi

我使用GetHTTPS - > UpdateAttribute - > PutHDFS流程来读取API中的json文件,每次让我们说30秒并将文件放入HDFS.第二步使用当前日期/时间戳更改filename属性,以便我们没有相同的文件名冲突.

到目前为止我已经尝试过了:
${filename: prepend(${now():format("yyyy-MM-dd-HH:mm:ss")})}
这会导致:

ERROR PutHDFS由于java.lang.IllegalArgumentException:java.net,无法写入HDFS.URISyntaxException:绝对URI中的相对路径:.2017-08-01-11:01:13-filename.json

我不确定这个错误来自哪里,说实话,并且在错误消息中创建的文件名中的日期之前有一个点(.)根据用于添加文件名的表达式不应该存在.在第二步中没有任何文件名操作,一切都按预期工作.任何帮助都非常感谢,提前感谢!

VM *_* MP 9

您的问题表明您的文件名包含一些可能是'.'的无效字符.要么 ':'.

你必须使用下面的表达式来存储带文件名的毫秒.

${filename:prepend(${now():toNumber()})}
Run Code Online (Sandbox Code Playgroud)

toNumber将日期转换为毫秒.

或者如果你愿意,你可以这样存储.

${filename:prepend(${now():format("yyyy-MM-dd-HH-mm-ss")})}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用UUID()作为文件名前缀.

https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#uuid