-
Notifications
You must be signed in to change notification settings - Fork 74
文件排序
quhongwei edited this page Mar 28, 2018
·
1 revision
组件可以根据文件一个或者几个字段来对文件记录进行排序
排序后可以是有序的分片文件,也可以合成一个完整的有序文件
// filePath指定排序原始文件路径
FileConfig config = new FileConfig(
filePath,
"/sort/template/ccbgold_balance_new_template.json", new StorageConfig("nas"));
FileSorter fileSorter = FileFactory.createSorter(config);
// sortTempPath指定排序临时路径存放地址
// executor 指定排序使用的线程池
// 这里设置合成一个完整文件
SortConfig sortConfig = new SortConfig(sortTempPath, SortTypeEnum.ASC, executor,
ResultFileTypeEnum.FULL_FILE_PATH);
sortConfig.setResultFileName("testSort");
sortConfig.setSliceSize(1024); // 排序时分片大小
sortConfig.setSortIndexes(new int[] { 0, 1 }); // 排序字段索引
SortResult sortResult = fileSorter.sort(sortConfig);
文件路径数组通过SortConfig指定
String sortTempPath = temporaryFolder.getRoot().getAbsolutePath();
FileConfig fileConfig = new FileConfig("/multiFilesSort/de/de.json",
new StorageConfig("nas"));
// 设置排序
fileConfig.setType(FileCoreToolContants.PROTOCOL_MULTI_FILE_SORTER);
FileSorter fileSorter = FileFactory.createSorter(fileConfig);
SortConfig sortConfig = new SortConfig(sortTempPath, SortTypeEnum.ASC, executor,
ResultFileTypeEnum.FULL_FILE_PATH);
sortConfig.setResultFileName("testSort");
sortConfig.setSliceSize(1024);
sortConfig.setSortIndexes(new int[] { 0, 1 });
String[] sourceFilePaths = new String[3];
sourceFilePaths[0] = File.class.getResource("/multiFilesSort/de/data/de1.txt").getPath();
sourceFilePaths[1] = File.class.getResource("/multiFilesSort/de/data/de2.txt").getPath();
sourceFilePaths[2] = File.class.getResource("/multiFilesSort/de/data/de3.txt").getPath();
sortConfig.setSourceFilePaths(sourceFilePaths);
SortResult sortResult = fileSorter.sort(sortConfig);