如果无效元数据可以做同样的事情,为啥需要在 Impala 中刷新
Posted
技术标签:
【中文标题】如果无效元数据可以做同样的事情,为啥需要在 Impala 中刷新【英文标题】:Why Refresh in Impala in required if invalidate metadata can do same thing如果无效元数据可以做同样的事情,为什么需要在 Impala 中刷新 【发布时间】:2019-09-15 17:47:00 【问题描述】:如果我使用 Hive 创建一个表,在其中插入记录并首先在 Impala 中反映同一个表,我必须运行 Invalidate Metadata,它反映了执行程序上的元数据也显示新添加的记录。 那我的问题还是为什么我们需要做刷新表?
【问题讨论】:
【参考方案1】:INVALIDATE METADATA
和 REFRESH
是对应的:
INVALIDATE METADATA
是一个简单的异步操作
从目录和协调器缓存中丢弃加载的元数据。
在该操作之后,目录和所有 Impala 协调员
只知道数据库和表的存在,什么都不知道
更多的。表的元数据加载由任何后续触发
查询。
REFRESH
同步重新加载元数据。 REFRESH
更多
比在表完成后执行完整的元数据加载更轻量级
无效。 REFRESH
无法检测到由 HDFS 平衡器等操作触发的块位置的变化(如 INVALIDATE METADATA
所做的那样),因此导致远程
在查询执行期间读取会对性能产生负面影响。
在使特定表无效后使用REFRESH
分隔
从针对该表运行的第一个查询加载元数据。
====
当在 Impala 外部、Hive 和其他 Hive 客户端(例如 SparkSQL)中进行以下更改时,需要INVALIDATE METADATA
:
当impalad 进行更改时,不需要INVALIDATE METADATA
。
更多详情,请阅读HERE
【讨论】:
以上是关于如果无效元数据可以做同样的事情,为啥需要在 Impala 中刷新的主要内容,如果未能解决你的问题,请参考以下文章
当我可以在“git init”之后对“git pull”做同样的事情时,为啥要“git clone”? [复制]
为啥在 runOnUiThread 做同样的事情时使用处理程序?