use of org.apache.carbondata.hadoop.internal.index.Block in project carbondata by apache.
the class IndexedSegment method getSplits.
@Override
public List<InputSplit> getSplits(JobContext job, FilterResolverIntf filterResolver) throws IOException {
// do as following
// 1. create the index or get from cache by the filter name in the configuration
// 2. filter by index to get the filtered block
// 3. create input split from filtered block
List<InputSplit> output = new LinkedList<>();
Index index = loader.load(this);
List<Block> blocks = index.filter(job, filterResolver);
for (Block block : blocks) {
output.add(makeInputSplit(block));
}
return output;
}
use of org.apache.carbondata.hadoop.internal.index.Block in project carbondata by apache.
the class InMemoryBTreeIndex method filter.
@Override
public List<Block> filter(JobContext job, FilterResolverIntf filter) throws IOException {
List<Block> result = new LinkedList<>();
FilterExpressionProcessor filterExpressionProcessor = new FilterExpressionProcessor();
AbsoluteTableIdentifier identifier = AbsoluteTableIdentifier.from(segment.getPath(), "", "");
// for this segment fetch blocks matching filter in BTree
List<DataRefNode> dataRefNodes = getDataBlocksOfSegment(job, filterExpressionProcessor, identifier, filter);
for (DataRefNode dataRefNode : dataRefNodes) {
BlockBTreeLeafNode leafNode = (BlockBTreeLeafNode) dataRefNode;
TableBlockInfo tableBlockInfo = leafNode.getTableBlockInfo();
result.add(new CarbonInputSplit(segment.getId(), tableBlockInfo.getDetailInfo().getBlockletId().toString(), new Path(tableBlockInfo.getFilePath()), tableBlockInfo.getBlockOffset(), tableBlockInfo.getBlockLength(), tableBlockInfo.getLocations(), tableBlockInfo.getBlockletInfos().getNoOfBlockLets(), tableBlockInfo.getVersion(), null));
}
return result;
}
Aggregations