Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring批处理-从DB读取-转换-并写入文件_Java_Spring_Spring Batch - Fatal编程技术网

Java Spring批处理-从DB读取-转换-并写入文件

Java Spring批处理-从DB读取-转换-并写入文件,java,spring,spring-batch,Java,Spring,Spring Batch,我正在探索SpringBatch,我有一个问题陈述,它要求我从db读取数据,将数据转换成逗号分隔的形式,然后写入文件。我有大约50个不同的查询和尽可能多的文件要创建。这些查询很少会返回可能使我的文件变大的巨大数据。我用SpringBatch解决了这个问题,对于SpringBatch基本上没有什么疑问 当我需要转换特定字段值时,可以使用字段提取器吗 BeanWrapperFieldExtractor提取器=新的BeanWrapperFieldExtractor(); setNames(新字符串[

我正在探索SpringBatch,我有一个问题陈述,它要求我从db读取数据,将数据转换成逗号分隔的形式,然后写入文件。我有大约50个不同的查询和尽可能多的文件要创建。这些查询很少会返回可能使我的文件变大的巨大数据。我用SpringBatch解决了这个问题,对于SpringBatch基本上没有什么疑问

  • 当我需要转换特定字段值时,可以使用字段提取器吗
  • BeanWrapperFieldExtractor提取器=新的BeanWrapperFieldExtractor();
    setNames(新字符串[]{“name”、“emailAddress”、“purchasedPackage”});
    线性集总器。设置字段提取器(提取器)
    
  • 当我需要转换特定字段值时,可以使用字段提取器吗。在这种情况下,我应该选择定制处理器吗
  • 我将使用处理器进行数据转换。这是项目处理器的典型用例。让每个组件做一件事(并且做得很好)是一个很好的实践:字段提取器提取字段,项目处理器进行转换。这有利于测试和重用

  • 在这种情况下,一个包含50个步骤和并行处理的作业是一种合适的方式吗
  • 出于可重启性的原因,为每个文件创建一个作业是更好的选择。当文件处理失败时,最好(更干净)为该特定文件重新启动失败的作业,而不是相同的作业并跳过49个步骤。通过在
    JobLauncher
    上使用适当的任务执行器,始终可以并行运行多个作业

  • 将头写入文件顶部而不是使用FlatFileHeaderCallback-以下写入文件的方式是否可以接受
  • 不,这是对听众的错误用法。我将使用页眉/页脚回调来编写页眉/页脚,并使用面向块的步骤来编写文件的内容

  • 多线程步骤用于加速单个步骤。如果一个作业有50个步骤,并且没有一个步骤依赖于另一个步骤,那么可以使用并行处理来加速作业的执行。是吗?这是否意味着SpringBatch可以创建50个线程并并行运行所有线程

  • 没错。并行度可在您在并行流上设置的
    TaskExecutor
    中配置。有关更多详细信息,请参阅。

    查看如果我为所有文件创建独立作业,如何从每个作业中获取数据并在最后合并。例如,如果我需要创建一个第51个文件,其中包含详细信息,如我创建的所有50个文件的名称、其中的记录数或相应文件的哈希值?顺便说一句,很高兴得到你的答复。我看了关于“高性能批处理”的课程!哦,非常希望你喜欢这次会议!如果要聚合结果,可以在单独的作业(读取生成的文件)中完成。您可以尝试的另一个有趣的概念是使用一个作业,并且聚合是“主”作业末尾的常规步骤。希望这有帮助。