Impala 中的无效元数据和刷新命令之间的区别?
Posted
技术标签:
【中文标题】Impala 中的无效元数据和刷新命令之间的区别?【英文标题】:Difference between invalidate metadata and refresh commands in Impala? 【发布时间】:2017-02-15 01:24:53 【问题描述】:我在这个链接上看到了影响Impala version 1.1:
自 Impala 1.1 起,REFRESH 语句仅适用于现有表。对于新表,您需要发出“INVALIDATE METADATA”语句。
这对于更高版本的 Impala 仍然适用吗?
【问题讨论】:
【参考方案1】:根据 Cloudera 的 Impala guide (Cloudera Enterprise 5.8) 但 5.9 保持不变:
INVALIDATE METADATA 和 REFRESH 是对应的:INVALIDATE METADATA 等待后续查询需要时重新加载元数据,但是 重新加载表的所有元数据,这可能很昂贵 操作,尤其是对于有很多分区的大表。刷新 立即重新加载元数据,但只加载块位置 新添加的数据文件的数据,使其操作成本更低 总体。如果数据以某种更广泛的方式进行了更改,例如 由 HDFS 平衡器重新组织,使用 INVALIDATE METADATA 来避免 减少本地读取导致的性能损失。如果您使用 Impala 在 1.0 版中,INVALIDATE METADATA 语句的工作方式与 Impala 1.0 REFRESH 语句是,而 Impala 1.1 REFRESH 是 针对将新数据文件添加到 现有表,因此现在需要表名参数。
与处理现有表相关:
表名是必需的参数 [for REFRESH]。刷新所有的元数据 表,请使用 INVALIDATE METADATA 命令。 因为 REFRESH table_name 仅适用于当前 Impala 节点已经知道,当您在 Hive shell,输入INVALIDATE METADATA new_table才可以看到 impala-shell 中的新表。一旦 Impala 知道该表,您就可以 为该表添加数据文件后发出 REFRESH table_name。
所以看起来它确实保持不变。我相信 CDH 5.9 附带 Impala 2.7。
【讨论】:
【参考方案2】:根据 Impala 文档 Invalidate Metada 和 Refresh
INVALIDATE METADATA 语句
INVALIDATE METADATA 语句将一个或所有表的元数据标记为陈旧。下次 Impala 服务对元数据无效的表执行查询时,Impala 会在查询继续之前重新加载关联的元数据。由于与 REFRESH 语句完成的增量元数据更新相比,这是一项非常昂贵的操作,因此在可能的情况下,首选 REFRESH 而不是 INVALIDATE METADATA。
当在 Impala 外部、Hive 和其他 Hive 客户端(例如 SparkSQL)中进行以下更改时,需要 INVALIDATE METADATA:
现有表的元数据发生变化。 添加了新表,Impala 将使用这些表。 SERVER 或 DATABASE 级别的 Sentry 权限已更改。 阻止元数据更改,但文件保持不变(HDFS 重新平衡)。 UDF jar 更改。 不再查询某些表,您希望从目录和协调器缓存中删除它们的元数据以减少内存需求。impalad 进行更改时不需要 INVALIDATE METADATA。
REFRESH 声明
REFRESH 语句从 Metastore 数据库重新加载表的元数据,并从 HDFS NameNode 增量重新加载文件和块元数据。 REFRESH 用于避免 Impala 与外部元数据源(即 Hive Metastore (HMS) 和 NameNodes)之间的不一致。
使用说明:
表名是必填参数,表必须已经存在并且Impala知道。
仅重新加载指定表的元数据。
在 Impala 之外发生以下情况之一后,使用 REFRESH 语句为特定表加载最新的元存储元数据:
删除、添加或修改文件。 例如,将新数据文件加载到表的 HDFS 数据目录后,附加到现有 HDFS 文件,通过 INSERT 或 LOAD DATA 从 Hive 插入数据。 删除、添加或修改分区。 例如,在 Hive 中发出 ALTER TABLE 或其他修改表的 SQL 语句之后【讨论】:
【参考方案3】:-
无效元数据用于刷新元存储和数据
(structure & data)==complete
flush
刷新仅用于更新数据 = 轻量级刷新
【讨论】:
以上是关于Impala 中的无效元数据和刷新命令之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章