impala同步hive中的元資料 收集統計資訊

2021-09-24 15:39:54 字數 1825 閱讀 7771

目錄

impala獲取hive中的元資料

收集統計資訊

1. 檢查統計資訊

2. 收集統計資訊

3. 刪除統計資訊

impala 通常和hive共用同乙個metadata 資料庫(通常是mysql/postgresql), 所以impala 能夠讀取到hive的元資料資訊. 如果impala需要訪問hive表, 需要將hive metadata 重新整理到impala中.

在hive中create/drop表後, 或者hdfs rebalance,或者手工刪除hdfs的檔案後, 則需要在impala中執行下面兩行命令:

invalidate metadata table_name;

describe table_name;

第一行命令 invalidate metadata 告訴impala 指定的 table 元資料已經過期, impala 將在下一次使用到該錶時自動重新整理元資料, 第二行命令即觸發impala去更新元資料, 以免將來真正使用該錶耗時太久.

如果impala已經知道了hive表的存在後, 又通過hive增加或刪除分割槽或alter table, 使用 refresh 命令即可更新元資料. refresh是對元資料進行增量更新, 和invalidate metadata相比, refresh命令使用成本低很多.

refresh table_name; --增量重新整理全表 

refresh [table_name] [partition (key_col1=val1 [, key_col2=val2...])]]; --僅僅重新整理指定分割槽

--備註:如果是用指定分割槽的方式進行刷表的話,那只能指定單個分割槽,不能採用》/《之類的分割槽範圍

invalidate metadata 命令如果不指定表名, 則將所有表的元資料都標記為過期, 慎用!

impala 僅僅能部分利用hive的統計資訊, 要想得到好的執行效率, impala需要收集統計資訊.

show table stats table_name; --顯示表和分割槽級別的統計資訊. 

如果返回第一列 #rows 值-1, 表名還沒有收集過統計資訊.

show column stats table_name ; --顯示列級別的統計資訊.

impala 的compute stats 一條命令同時採集表和字段兩種資訊, 使用起來非常方便. 

它增量和全量兩種寫法, 在從未收集過統計資訊的前提下, 並且數量一致的情況下, 使用compute stats命令要比compute

incremental stats速度更快. 所以對於非分割槽表, 推薦使用compute stats.

compute stats table_name ; -- 對於非分割槽表, 推薦使用compute stats, 速度更快

compute incremental stats table_name ;--對於分割槽表, 推薦使用compute incremental stats, 速度更快一些.

如果table通過hive增加了分割槽, 需要先進行refresh, 然後增量收集統計資訊. 

refresh table_name;

compute incremental stats table_name;

drop stats table_name

drop incremental stats table_name partition (key_col1=val1 [, key_col2=val2...])]

Hive和Impala的區別

hive和impala的區別 資料儲存 使用相同的儲存資料池都支援把資料儲存於hdfs,hbase。元資料 兩者使用相同的元資料。sql解釋處理 比較相似都是通過詞法分析生成執行計畫。執行計畫 hive 依賴於mapreduce執行框架,執行計畫分成 map shuffle reduce map s...

impala如何出現hive表的資料

對應的操作為 invalidate metadata t system cpumemory refresh t system cpumemory 深入學習impala的最主要乙個原因就是目前在使用impala的時候遇到了各種了效能問題,之前定位過一次問題,猜測其效能損耗的乙個主要原因在invalid...

hive 的分組排序用法與 Impala 分組排序

hive 的分組排序用法與 impala 分組排序 hive支援兩種語法 row number over partition by 分組的字段 order by 排序的字段 as rank rank 可隨意定義表示排序的標識 row number over distribute by 分組的字段 s...