java - 使用 camel 从 FTP 动态重命名文件

标签 java hadoop apache-camel hdfs

我正在尝试使用 camel 将一些文件从 FTP 路由到 HDFS。总的来说,我的路线似乎工作正常,但是只要有一个名称中有空格的文件,路线就会失败。尝试将文件复制到 HDFS 失败。 这些文件是动态的,每天都在变化,所以我无法通过 .setHeader 进行特定的包含和更改文件名,也无法在 FTP 上重命名文件。

在将文件路由到 HDFS 之前,是否可以使用 camel 动态重命名名称中有空格的文件?

最佳答案

存储在名为“CamelFileName”的消息 header 中的文件名,您可以这样使用:

from("sftp:...")
        .process(new Processor() {
            @Override
            public void process(Exchange exchange) throws Exception {
                Message in = exchange.getIn();
                String originalFilename = (String) in.getHeader(Exchange.FILE_NAME);
                String modifiedFilename = originalFilename.replaceAll("\\s+", "");
                in.setHeader(Exchange.FILE_NAME,  modifiedFilename);
        }})
.to("hdfs:...");

或更简洁:

from("ftp:in")
     .setHeader(Exchange.FILE_NAME, header(Exchange.FILE_NAME).regexReplaceAll("\\s+", "_").getExpression())
     .to("hdfs:out");

关于java - 使用 camel 从 FTP 动态重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34404108/

相关文章:

hadoop - Datanode中的操作系统

google-bigquery - 将数据流式传输到 Google BigQuery 表 : problems using InsertId to De-Duplicate Records

Java RMI 连接被拒绝

java - 关闭 BufferedReader

java - 读取标签之间的 XML 数据

hadoop - 如何运行 MRUnit?

hadoop - 通过 PIG 加载多个 hbase 表限定符

Java:如何有效地检查空指针

jakarta-ee - Camel - 生产者模板 Http4 响应代码

java - 测试 Camel 路线