spring-batch - 当流从单个文件中读取时,如何在多台机器之间拆分 Spring Batch 的工作?
问题描述
我的流程是:
- 从单个文件中读取(文件大小~1TB)
- 处理每一行
- 将每一行写入 2 个输出文件
如何在多台机器之间拆分工作以减少整体运行时间?
解决方案
此用例至少有三种技术:
- 使用split命令(或等效命令)对文件进行物理分区以创建多个分区。然后使用分区步骤来处理每个分区。
- 对文件进行逻辑分区(参见BATCH-1613
FlatFilePartitioner
中的附加示例)并使用分区步骤来处理每个分区 - 使用临时表将文件加载到其中,然后使用分区步骤处理表上的分区(例如 ID 1 -> 1000、1001 -> 2000 等)
希望这可以帮助。
推荐阅读
- arrays - 编写 VBA,将数组第 2 列中的每个元素设置为大小为 n 的新嵌套数组,其中 n 是第 1 列中的整数
- python - 有没有一种简单的方法可以在 Python 3 中进行多行输入?
- mysql - MySQL 如何启用加载本地数据服务器/客户端(使用 Powershell)
- sql - 3 行到 1 个 SQL
- uitableview - 如何使用 JSON 数据填充自定义 UITableViewCell?
- cassandra - Cassandra 何时确认写入?
- numbers - 增加产生最后一位数和效率顺序的素数
- node.js - Heroku Postgres 无法在 Windows 上拉和推
- php - laravel 试图提取收到的 id,不能使用它
- android - 从帮助程序类访问共享首选项