栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Presto Hive数据源Split的生成

Presto Hive数据源Split的生成

presto中生成split的基本原理是:

     1. presto先扫描所有所有需要访问的hdfs的数据文件,如果hdfs文件比hive.max-split-size(默认64M) 大,则一个文件生成一个split.

其代码实现在于BackgroundHiveSplitLoader::loadSplits中,loadSplits会扫描分区的所有文件,每个文件创建一个InternalHiveSplit,提交到HiveSplitSource中异步生成真正的HiveSplit。

     2. 在HiveSplitSource中,如果文件不可切割的话,则无论文件大大小多大都只生成一个split,如果可以切割而且文件大于hive.max-split-size,则对文件进行切割成多个split,每个split最大处理hive.max-split-size大小的数据,其实现代码在于:

public CompletableFuture getNextBatch(ConnectorPartitionHandle partitionHandle, int maxSize)
{
     ....

     if (internalSplit.isSplittable()) {
           splitBytes = min(maxSplitBytes, block.getEnd() - internalSplit.getStart());
     }
     else {
           splitBytes = internalSplit.getEnd() - internalSplit.getStart();
     }
     resultBuilder.add(new HiveSplit())
     internalSplit.increaseStart(splitBytes);
     ....
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/696268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号