NiFi:更新属性以更改文件名
NiFi: UpdateAttribute to change filename
我使用 GetHTTPS--> UpdateAttribute --> PutHDFS 流来从 API 中读取 json 文件,每隔 30 秒将文件放入 HDFS。第 2 步将文件名 属性 更改为当前的 date/timestamp,这样我们就不会发生相同的文件名冲突。
到目前为止我已经尝试过:
${filename: prepend(${now():format("yyyy-MM-dd-HH:mm:ss")})}
这导致:
错误 PutHDFS 由于 java.lang.IllegalArgumentException:java.net,无法写入 HDFS。 URISyntaxException:
绝对 URI 中的相对路径:.2017-08-01-11:01:13-filename.json
老实说,我不确定这个错误是从哪里来的,而且错误消息中创建的文件名中的日期之前有一个点 (.),根据用于前置文件名。在第二步中没有任何文件名操作,一切正常。非常感谢任何帮助,提前致谢!
您的问题表明您的文件名包含一些无效字符,这些字符可能是“.”。或“:”。
您必须使用以下表达式来存储文件名的毫秒数。
${filename:prepend(${now():toNumber()})}
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
您输入的字符“:”无效
更改时间中的分号(:)。
试试这个,
${文件名: prepend(${now():format("yyyy-MM-dd-HH-mm-ss")})}
我使用 GetHTTPS--> UpdateAttribute --> PutHDFS 流来从 API 中读取 json 文件,每隔 30 秒将文件放入 HDFS。第 2 步将文件名 属性 更改为当前的 date/timestamp,这样我们就不会发生相同的文件名冲突。
到目前为止我已经尝试过:
${filename: prepend(${now():format("yyyy-MM-dd-HH:mm:ss")})}
这导致:
错误 PutHDFS 由于 java.lang.IllegalArgumentException:java.net,无法写入 HDFS。 URISyntaxException: 绝对 URI 中的相对路径:.2017-08-01-11:01:13-filename.json
老实说,我不确定这个错误是从哪里来的,而且错误消息中创建的文件名中的日期之前有一个点 (.),根据用于前置文件名。在第二步中没有任何文件名操作,一切正常。非常感谢任何帮助,提前致谢!
您的问题表明您的文件名包含一些无效字符,这些字符可能是“.”。或“:”。
您必须使用以下表达式来存储文件名的毫秒数。
${filename:prepend(${now():toNumber()})}
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
您输入的字符“:”无效
更改时间中的分号(:)。
试试这个,
${文件名: prepend(${now():format("yyyy-MM-dd-HH-mm-ss")})}