自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面試官:Hive表有數(shù)據(jù),但為什么 Iimpala 查詢(xún)不到數(shù)據(jù)?

大數(shù)據(jù) 數(shù)據(jù)分析
我們知道,distribute 是分配、分布的意思,顧名思義,hive中(distribute by + “表中字段”)關(guān)鍵字就是控制map輸出結(jié)果的分發(fā),相同字段的map輸出會(huì)發(fā)到一個(gè)reduce節(jié)點(diǎn)去處理。

張工是一名程序員,做java開(kāi)發(fā)的,有兩年多開(kāi)發(fā)經(jīng)驗(yàn),有次到一家軟件公司應(yīng)聘大數(shù)據(jù)開(kāi)發(fā)崗位,面試官問(wèn)了他這樣一個(gè)問(wèn)題。

hive表有數(shù)據(jù),但為什么impala查詢(xún)不到數(shù)據(jù)?

你能說(shuō)說(shuō)這是什么情況導(dǎo)致的,有什么辦法解決方案嗎?

對(duì)于這個(gè)問(wèn)題,我們不妨來(lái)回顧下,什么情況下hive表有數(shù)據(jù),但impala沒(méi)有數(shù)據(jù)的情況。

1. 問(wèn)題描述

用insert overwrite方式往hive寫(xiě)入的數(shù)據(jù),數(shù)據(jù)寫(xiě)入成功了,在hive查詢(xún)是可以查到數(shù)據(jù)的,但在impala刷新元數(shù)據(jù)后,查詢(xún)卻沒(méi)有查到,剛開(kāi)始以為是元數(shù)據(jù)刷新不成功,再用命令

invalidate metadata table_name
refresh table_name

刷新成功后還是沒(méi)有數(shù)據(jù),返回結(jié)果為空。

2.問(wèn)題追溯

往hive表寫(xiě)入數(shù)據(jù)sql里使用了union ,導(dǎo)致hdfs目錄結(jié)構(gòu)多了一層,本來(lái)數(shù)據(jù)是在分區(qū)第一層的,使用了union 后,數(shù)據(jù)存儲(chǔ)到分區(qū)底下的文件夾了。

導(dǎo)致impala無(wú)法訪問(wèn)到具體數(shù)據(jù)。impala版本2.12,查看impala版本命令(impala-shell -v)

3.解決方案

在寫(xiě)入數(shù)據(jù)sql 后面加上 distribute by + 表中字段 就可以了。

這是為什么呢,為什么加上distribute by +表中字段 就可以了。

我們知道,distribute 是分配、分布的意思,顧名思義,hive中(distribute by + “表中字段”)關(guān)鍵字就是控制map輸出結(jié)果的分發(fā),相同字段的map輸出會(huì)發(fā)到一個(gè)reduce節(jié)點(diǎn)去處理。

總結(jié)

hive表有數(shù)據(jù),impala表沒(méi)有數(shù)據(jù),檢查是否刷新元數(shù)據(jù),操作命令:

invalidate metadata

refresh table_name。已經(jīng)成功刷新元數(shù)據(jù)了,impala依然沒(méi)有數(shù)據(jù), 檢查寫(xiě)入hive sql 是否使用union方式,如果是,在sql 后面加上(distribute by + 表中字段 )。

拓展:

distribute by、sort by、cluster by

責(zé)任編輯:武曉燕 來(lái)源: 愛(ài)開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)