java - Spring Batch 比较两个文件并找到匹配的记录

标签 java spring-batch

我们是否可以根据任何特定列比较两个不同的文件,并使用 Spring Batch 从一个文件中获取值。

例如:

文件 1 内容:

FirstName, LastName, Age

文件 2 内容:

FirstName, LastName, Business

我的要求是基于名字和姓氏,我需要获取业务字段。基本上我将迭代文件 1 并在文件 2 中搜索以检查匹配的记录。

目前我正在做的是使用 Apache Lucene 索引文件 2 并使用 Spring Batch 迭代文件 1 并在 Lucene 索引中搜索以获取匹配的文档。

我正在使用 Spring Batch 或任何其他框架寻找类似的功能?

问候, 香卡

最佳答案

如果你想走排序输入文件的路线,这样的事情应该可以工作:

public class MergingItemReader implements ItemStreamReader<MergedRecord> {

    private ItemStreamReader<RecordTypeA> readerA;
    private ItemStreamReader<RecordTypeB> readerB;

    @Override
    public MergedRecord read() throws Exception {
        RecordTypeA itemA = readerA.read();
        RecordTypeB itemB = readerB.read();
        Assert.isTrue(itemA.getKey().equals(itemB.getKey()), "Inconsistent data");
        return new MergedRecord(itemA, itemB);
    }

    @Override
    public void open(ExecutionContext executionContext) throws ItemStreamException {
        readerA.open(executionContext);
        readerB.open(executionContext);
    }

    @Override
    public void update(ExecutionContext executionContext) throws ItemStreamException {
        readerA.update(executionContext);
        readerB.update(executionContext);
    }

    @Override
    public void close() throws ItemStreamException {
        readerA.close();
        readerB.close();
    }

    public void setReaderA(ItemStreamReader<RecordTypeA> readerA) {
        this.readerA = readerA;
    }

    public void setReaderB(ItemStreamReader<RecordTypeB> readerB) {
        this.readerB = readerB;
    }

}

关于您关于CompositeItemReader的其他问题:没有这样的事情。也许您将它与 CompositeItemWriter 混淆了。

关于java - Spring Batch 比较两个文件并找到匹配的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28502712/

相关文章:

java - 如何使用 Spring Batch 并行步骤分割流配置上述用例?

Spring批处理: chaining reader.处理器,读取器是否具有相同的初始数据?

java - Spring Batch - 步骤不再执行 : Step already complete or not restartable

java - 如何使用 1 个 Spring Batch 作业来处理多个请求

java - 如何在 Cloud Endpoints 中公开用户而不传递引用?

Java,二十一点计算不正确

java - 从 Thymeleaf 模板中通过 id 获取多个元素

java - Android通知IntentService中的deleteIntent调用函数

java - 如何在每个月的每个工作日运行 quartz 作业

java - 创建管理器后是否有任何理由立即调用entityManager.flush()(JPA,Hibernate)