ORC Cache

ORC Cache功能可以通过缓存频繁访问的数据来提高查询性能。ORC Cache减少了TableScan操作所花费的时间,因为减少了网络IO所花费的时间。这又相应地降低了查询延迟。

在缓存访问频率最高且与openLooKeng部署不在同一位置的表中的原始数据时,该功能最有用。启用该功能后,工作节点会自动缓存所有ORC文件的文件尾(file tail)、条带页脚(stripe footer)、行索引、bloom索引,因为它们很小。不过,行组数据往往非常庞大,并且由于缓存大小的限制,为所有文件缓存行组数据实际上并不可行。

单击该链接以了解ORC规范。

可以使用CACHE TABLE SQL命令来配置工作节点缓存行数据的表和分区。

以下各节简要说明了整个行数据缓存实现的工作方式。

SplitCacheMap

用户可以使用CACHE TABLE SQL语句来配置Hive连接器必须缓存的表和数据。要缓存的分区被定义为谓词,并存储在SplitCacheMap中。SplitCacheMap存储在协调节点的本地内存中。

以下是用于缓存2020年1月4日至2020年1月11期间每天的sales表数据的示例查询。

cache table hive.default.sales where sales_date BETWEEN date '2020-01-04' AND date'2020-01-11'

有关更多信息,请查看CACHE TABLESHOW CACHEDROP CACHE命令。

SplitCacheMap存储以下两类信息:

  1. 通过CACHE TABLE命令提供的表名和谓词。
  2. 分段到工作节点的映射。

连接器

启用缓存并通过CACHE TABLE SQL命令提供谓词后,如果相应的分区ORC文件与谓词匹配,则连接器会将Hive分段标记为可缓存。

SplitCacheAwareNodeSelector

通过实现SplitCacheAwareNodeSelector来支持Cache相关性调度。 SplitCacheAwareNodeSelector与负责将分段分配给工作节点的任何其他节点选择器相同。当第一次调度某个分段时,节点选择器会存储该分段以及为其调度了该分段的工作节点。对于后续调度,会使用该信息来确定是否已经有工作节点处理过该分段。如果已经有工作节点处理过该分段,则节点选择器将该分段调度到先前处理过该分段的工作节点上。如果没有工作节点处理过该分段,SplitCacheAwareNodeSelector将转而使用默认节点选择器来调度分段。 处理分段的工作节点会将分段映射的数据缓存到本地内存中。

工作节点

工作节点依赖ConnectorSplit.isCacheable方法来确定是否必须缓存分段数据。如果属性设置为true,则HiveConnector会尝试从缓存中检索数据。如果缓存未命中,则从HDFS中读取数据并将其存储在缓存中,以供将来使用。工作节点会根据到期时间和是否达到大小限制来清除其缓存,与协调节点无关。

请查看Hive连接器下的ORC Cache Configuration,以了解有关缓存配置的更多信息。

有奖捉虫

“有虫”文档片段

0/500

存在的问题

文档存在风险与错误

● 拼写,格式,无效链接等错误;

● 技术原理、功能、规格等描述和软件不一致,存在错误;

● 原理图、架构图等存在错误;

● 版本号不匹配:文档版本或内容描述和实际软件不一致;

● 对重要数据或系统存在风险的操作,缺少安全提示;

● 排版不美观,影响阅读;

内容描述不清晰

● 描述存在歧义;

● 图形、表格、文字等晦涩难懂;

● 逻辑不清晰,该分类、分项、分步骤的没有给出;

内容获取有困难

● 很难通过搜索引擎,openLooKeng官网,相关博客找到所需内容;

示例代码错误

● 命令、命令参数等错误;

● 命令无法执行或无法完成对应功能;

内容有缺失

● 关键步骤错误或缺失,无法指导用户完成任务,比如安装、配置、部署等;

● 逻辑不清晰,该分类、分项、分步骤的没有给出

● 图形、表格、文字等晦涩难懂

● 缺少必要的前提条件、注意事项等;

● 描述存在歧义

0/500

您对文档的总体满意度

非常不满意
非常满意

请问是什么原因让您参与到这个问题中

您的邮箱

创Issue赢奖品
根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
有奖捉虫