Contents
  1. 1. 入口
  2. 2. 加载

入口

加载命令的入口在CarbonLoadDataCommand,command的处理主要分为meta和data两部分的处理。数据加载主要在org.apache.carbondata.spark.rdd.CarbonDataRDDFactory#loadCarbonData实现,还会根据数据来源、参数的不同进一步细分加载的具体实现,常见的是通过文件加载即loadDataFile。

加载

和查询类似,loadDataFile里同样涉及任务的划分,也是通过自定义RDD实现(NewCarbonDataLoadRDD),里面的DataLoadExecutor中DataLoadProcessBuilder定义了加载的流程pipeline,包括输入、转换、排序、写出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private AbstractDataLoadProcessorStep buildInternal(CarbonIterator[] inputIterators,
CarbonDataLoadConfiguration configuration) {
// 1. Reads the data input iterators and parses the data.
AbstractDataLoadProcessorStep inputProcessorStep =
new InputProcessorStepImpl(configuration, inputIterators);
// 2. Converts the data like dictionary or non dictionary or complex objects depends on
// data types and configurations.
AbstractDataLoadProcessorStep converterProcessorStep =
new DataConverterProcessorStepImpl(configuration, inputProcessorStep);
// 3. Sorts the data by SortColumn
AbstractDataLoadProcessorStep sortProcessorStep =
new SortProcessorStepImpl(configuration, converterProcessorStep);
// 4. Writes the sorted data in carbondata format.
return new DataWriterProcessorStepImpl(configuration, sortProcessorStep);
}