如何控制DSBulk UNLOAD生成文件数 输出单个CSV或指定数量分片
DSBulk UNLOAD 导出文件数量配置方案
DSBulk导出时的输出文件数量由对应格式连接器的并发文件参数直接控制,和导出数据量无强制绑定关系,默认生成固定数量文件是参数默认值匹配运行环境配置导致的。
限制导出结果为仅1个CSV文件
在执行unload命令时追加-connector.csv.maxConcurrentFiles 1参数即可,该参数会强制DSBulk单线程写入输出目标,最终仅生成1份CSV文件。
示例命令:
dsbulk unload -k 你的键空间名 -t 你的表名 -h 连接地址 -c csv -url 目标存储路径 -connector.csv.maxConcurrentFiles 1
自定义导出文件数量(含JSON格式默认生成2个文件的解决方法)
固定生成2个JSON文件的原因
EC2环境执行JSON导出命令时未手动指定并发文件参数,DSBulk默认会按max(1, 运行环境可用CPU核数/2)的规则计算并发文件数,常规4核配置的EC2实例默认并发固定为2,和实际导出数据量无关,因此每次都会生成2个JSON文件。
自定义分片数配置方法
针对JSON格式导出,通过-connector.json.maxConcurrentFiles参数指定目标文件数即可,比如需要生成5个分片文件,直接将参数值设为5。
修改后的参考命令:
dsbulk unload -k custdata -t orderhistory -h '172.xx.xx.xxx' -c json -url proddata/json/custdata/orderhistory/data -connector.json.maxConcurrentFiles 5
配置注意事项
- 参数取值必须为正整数,设置为N就会强制生成N个输出分片文件,导出数据会均匀分散到各个文件中
- 不同输出格式对应不同参数:CSV格式使用
connector.csv.maxConcurrentFiles,JSON格式使用connector.json.maxConcurrentFiles,不可混用 - 不要和全局并发参数
executor.maxConcurrency混淆,该参数控制的是数据读取、处理的整体线程数,不直接决定最终输出文件的数量
内容的提问来源于stack exchange,提问作者Rahul Diggi
相关产品推荐
相关产品推荐

