Search in sources :

Example 1 with TableLoadData

use of com.alibaba.otter.node.etl.load.loader.db.DbLoadData.TableLoadData in project otter by alibaba.

the class DbLoadAction method doLoad.

private void doLoad(final DbLoadContext context, DbLoadData loadData) {
    // 优先处理delete,可以利用batch优化
    List<List<EventData>> batchDatas = new ArrayList<List<EventData>>();
    for (TableLoadData tableData : loadData.getTables()) {
        if (useBatch) {
            // 优先执行delete语句,针对uniqe更新,一般会进行delete + insert的处理模式,避免并发更新
            batchDatas.addAll(split(tableData.getDeleteDatas()));
        } else {
            // 优先执行delete语句,针对uniqe更新,一般会进行delete + insert的处理模式,避免并发更新
            for (EventData data : tableData.getDeleteDatas()) {
                batchDatas.add(Arrays.asList(data));
            }
        }
    }
    if (context.getPipeline().getParameters().isDryRun()) {
        doDryRun(context, batchDatas, true);
    } else {
        doTwoPhase(context, batchDatas, true);
    }
    batchDatas.clear();
    // 处理下insert/update
    for (TableLoadData tableData : loadData.getTables()) {
        if (useBatch) {
            // 执行insert + update语句
            batchDatas.addAll(split(tableData.getInsertDatas()));
            // 每条记录分为一组,并行加载
            batchDatas.addAll(split(tableData.getUpadateDatas()));
        } else {
            // 执行insert + update语句
            for (EventData data : tableData.getInsertDatas()) {
                batchDatas.add(Arrays.asList(data));
            }
            for (EventData data : tableData.getUpadateDatas()) {
                batchDatas.add(Arrays.asList(data));
            }
        }
    }
    if (context.getPipeline().getParameters().isDryRun()) {
        doDryRun(context, batchDatas, true);
    } else {
        doTwoPhase(context, batchDatas, true);
    }
    batchDatas.clear();
}
Also used : TableLoadData(com.alibaba.otter.node.etl.load.loader.db.DbLoadData.TableLoadData) ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) EventData(com.alibaba.otter.shared.etl.model.EventData)

Aggregations

TableLoadData (com.alibaba.otter.node.etl.load.loader.db.DbLoadData.TableLoadData)1 EventData (com.alibaba.otter.shared.etl.model.EventData)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1