Impala metadata 刷新

Impala依赖Metastore存储表定义,并在启动时缓存元数据以提高查询效率。当元数据发生外部变化,如Hive更新或数据直接添加到HDFS,需使用INVALIDATE METADATA或REFRESH语句刷新元数据。INVALIDATE METADATA全量刷新,成本高,REFRESH仅针对单表,成本低。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Impala 在传统的MYSQL 或 PostgreSQL 数据库称为 Metastore 上保持其表定义,Hive 也在相同的数据库上保存此类型的数据。因此,Impala 可以访问由 Hive 定义或加载的表。
对于具有大量数据或多个分区的表,检索表内所有元数据可能会花费很长时间,在某些情况下需要几分钟。因此,每个 Impala 节点缓存所有这些数据,以便在未来对同一表进行查询时重复使用。
如果更新表定义或表数据,集群中所有其他Impala Daemon必须接收到最新的元数据、更换过时的缓存元数据,然后再对该表发出查询。

1、元数据缓存

在Impala里面存在元数据的缓存。元数据保存在Hive的Metastore里面,在Impala启动的时候,会将元数据缓存到Impala daemon的节点。当Impala daemon发起元数据变更的时候,比如说创建表,删除表,或者修改表的定义,这些都是可以缓存下来的。如果我们去查询表信息的时候,可以从缓存里面找到,直接在节点中进行查询,所以在每个Impala daemon里面有metadata cache节点用作缓存。而当Impala进程改变了元数据,将会提示catalog服务,Catalog服务通知所有Impala daemons来更新缓存。

2、外部改变和元数据缓存

上面讲的都是内部的改变,然而很多时候还会有外部的改变,可外部的改变对于Impala来说是未知的,比如:
(1)Hive、Hcatalog或HueMetadata Manager改变了元数据
(2)数据直接添加到HDFS目录
外部的改变将导致Impala元数据缓存变得不可用,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值