如何根据文件名定义hadoop级联分接到不同路径?

如何根据文件名定义hadoop级联分接到不同路径?,hadoop,cascading,Hadoop,Cascading,我使用Hadoop级联处理HDFS上的数据,如下所示: Tap inTap_file = new Hfs(new TextDelimited(true, "|~|"), data_hadoop_inPath + "order_summary/*.txt"); Tap outTap_file = new Hfs(new TextDelimited(true, "|~|"), data_hadoop_workingPath + "order_summary"); Pipe copyFile

我使用Hadoop级联处理HDFS上的数据,如下所示:

Tap inTap_file = new Hfs(new TextDelimited(true, "|~|"), data_hadoop_inPath + "order_summary/*.txt");
Tap outTap_file = new Hfs(new TextDelimited(true, "|~|"), data_hadoop_workingPath + "order_summary");

    Pipe copyFilePipe = new Pipe("copy");
    Pipe filePipe = null;
    try {
        filePipe = PipeFactory.getPipe("order_summary_Pipe", order_summary_fields);
    } catch (Exception e) {
        LOGGER.error("Failed to get order summary pipe!", e);
    }

    FlowDef flowDef_fileType = FlowDef.flowDef().addSource(copyFilePipe, inTap_file)
            .addTailSink(filePipe, outTap_file);
    flowDef_fileType.setName("OrderSumDailyFlow");
问题是:收件箱下有多个文件。我使用*.txt匹配所有文件。处理完第一个文件后,创建了数据\u hadoop\u workingPath+订单\u摘要目的地。在处理第二个文件时,出现一个错误,即数据\u hadoop\u workingPath+订单\u摘要已经存在。我注意到级联中有SinkMode,但SinkMode.UPDATE不适用于Hadoop。如何为每个文件使用不同的接收器路径?这里的最佳实践是什么?
谢谢大家!

一个选项是不将输出文件放入outTap\u文件中。它将生成零件文件

Tap outTap_file = new Hfs(new TextDelimited(true, "|~|"),
   data_hadoop_workingPath + "order_summary");
仅提及您要写入的路径。就像下面提到的

Tap outTap_file = new Hfs(new TextDelimited(true, "|~|"),
   data_hadoop_workingPath);