1. 程式人生 > >Hive面試題考點-整理

Hive面試題考點-整理

1)Hive資料傾斜問題:

傾斜原因: map輸出資料按Key Hash分配到reduce中,由於key分佈不均勻、或者業務資料本身的特點。等原因造成的reduce上的資料量差異過大。

1.1)key分佈不均勻

1.2)業務資料本身的特性

1.3)SQL語句造成資料傾斜

解決方案:

1>引數調節:

    hive.map.aggr=true

    hive.groupby.skewindata=true

有資料傾斜的時候進行負載均衡,當選項設定為true,生成的查詢計劃會有兩個MR Job。第一個MR Job中,Map的輸出結果集合會隨機分佈到Reduce中,每個Reduce做部分聚合操作,並輸出結果,這樣處理的結果是相同Group By Key有可能被分發到不同的Reduce中,從而達到負載均衡的目的;第二個MR Job在根據預處理的資料結果按照 Group By Key 分佈到Reduce中(這個過程可以保證相同的 Group By Key 被分佈到同一個Reduce中),最後完成最終的聚合操作。

2>SQL語句調節:

   1)選用join key 分佈最均勻的表作為驅動表。做好列裁剪和filter操作,以達到兩表join的時候,資料量相對變小的效果。

   2)大小表Join: 使用map join讓小的維度表(1000條以下的記錄條數)先進記憶體。在Map端完成Reduce。

   3)大表Join大表:把空值的Key變成一個字串加上一個隨機數,把傾斜的資料分到不同的reduce上,由於null值關聯不上,處理後並不影響最終的結果。

   4)count distinct大量相同特殊值:count distinct時,將值為空的情況單獨處理,如果是計算count distinct,可以不用處理,直接過濾,在做後結果中加1。如果還有其他計算,需要進行group by,可以先將值為空的記錄單獨處理,再和其他計算結果進行union.

2)請說明hive中 sort by ,order by ,cluster by ,distribute by各代表什麼意思。

order by :會對輸入做全域性排序,因此只有一個reducer(多個reducer無法保證全域性有序).只有一個reducer,會導致當輸入規模較大時,需要較長的計算時間。

sort by :不是全域性排序,其在資料進入reducer前完成排序

distribute by :按照指定的欄位對資料進行劃分輸出到不同的reduce中

cluster by :除了具有distribute by 的功能外還兼具sort by 的功能

3)描述資料中的null,在hive底層如何儲存

null在hive底層預設是用"\N"來儲存的,所以在sqoop到mysql之前需要將為null的資料加工成其他字元,否則sqoop提示錯誤

4)Hive中 split、coalesce以及collect_list函式的用法

   split將字串轉化為陣列

    coalesce(T v1,T v2,...) 返回引數中的第一個非空值;如果所有值都為null,那麼返回null

    collect_list列出該欄位所有的值,不去重 select collect_list(id) from table;

5)將檔案匯入到hive表中

   load data local inpath '/a.txt' overwrite into table test partition(xx='xx')

6)Hive檔案壓縮格式有哪些,壓縮效率如何

開啟壓縮

set hive.exec.compress.output=true;

set mapred.output.compress=true;

set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

set io.compression.codec=org.apache.hadoop.io.compress.GzipCodec;

set mapred.output.compression.type=BLOCK;

TextFile (壓縮方式Gzip,Bzip2壓縮後不支援split)

SequenceFile

RCFile(儲存方式:資料按行分塊,每塊按列儲存。結合了行儲存和列儲存的優點)

ORCFile

7)Hive的分組方式

row_number() 是沒有重複值的排序(即使兩天記錄相等也是不重複的),可以利用它來實現分頁
dense_rank() 是連續排序,兩個第二名仍然跟著第三名
rank()       是跳躍排序的,兩個第二名下來就是第四名


相關推薦

Hive試題考點-整理

1)Hive資料傾斜問題: 傾斜原因: map輸出資料按Key Hash分配到reduce中,由於key分佈不均勻、或者業務資料本身的特點。等原因造成的reduce上的資料量差異過大。 1.1)key分佈不均勻 1.2)業務資料本身的特性 1.3)SQL語句造成資料傾斜 解

100道Java試題收集整理及參考答案

java面試題不積跬步無以至千裏,這裏會不斷收集和更新Java基礎相關的面試題,目前已收集100題。1.什麽是B/S架構?什麽是C/S架構B/S(Browser/Server),瀏覽器/服務器程序C/S(Client/Server),客戶端/服務端,桌面應用程序2.你所知道網絡協議有那些?HTTP:超文本傳輸

Java基礎試題收集整理

1、一個".java"原始檔中是否可以包括多個類(不是內部類)?有什麼限制?    可以有多個類,但只能有一個public的類,並且public的類名必須與檔名相一致。 2、Java有沒有goto?    java中的保留字,現在沒有在java中使用。 3、說說&

Hive試題收集

1.Hive 原理 1. 使用者提交查詢等任務給Driver。 2. 編譯器獲得該使用者的任務Plan。 3. 編譯器Compiler根據使用者任務去MetaStore中獲取需要的Hive的元資料資訊。 4. 編譯器Compiler得到元

大資料每日默寫(試題整理(持續更新)

2018.10.22 1.抽象類與介面的區別? 1.語法層面上的區別   1)抽象類可以提供成員方法的實現細節,而介面中只能存在public abstract 方法;   2)抽象類中的成員變數可以是各種型別的,而介面中的成員變數只能是public static final型別的;   3)

Hive試題:Hive分割槽表和分桶表的區別

分割槽在HDFS上的表現形式是一個目錄, 分桶是一個單獨的檔案 分割槽:  細化資料管理,直接讀對應目錄,縮小mapreduce程式要掃描的資料量 分桶:   1、提高join查詢的效率(用分桶欄位做連線欄位)    

Hive試題:udf,udaf,udtf的區別

Hive中有三種UDF:     1、使用者定義函式(user-defined function)UDF;     2、使用者定義聚集函式(user-defined aggregate function,UDAF); &nb

Hive試題Hive 內部表和外部表的區別

建立外部表多了external關鍵字說明以及location path. Hive中表與外部表的區別: 1、在匯入資料到外部表,資料並沒有移動到自己的資料倉庫目錄下,也就是說外部表中的資料並不是由它自己來管理的!而表則不一樣; 2、在刪除表的時候,Hive將會把屬於表的元資料和資料全

Hive試題:請寫出你在工作中自定義過的udf函式,簡述定義步驟

步驟: 1.extends UDF,實現evaluate() 2.add JAR /home/hadoop/hivejar/udf.jar; 3.create temporary function tolowercase as 'com.ghgj.hive.udf.ToLowerCa

Hive試題hive有哪些udf函式,作用

UDF(user-defined function)作用於單個數據行,產生一個數據行作為輸出。(數學函式,字串函式) UDAF(使用者定義聚集函式 User- Defined Aggregation Funcation):接收多個輸入資料行,併產生一個輸出資料行。(count,max)

試題答案整理

反射的用途和實現? java中的反射機制是指對於任意一個類都能知道這個類的所有屬性和方法,對於任意一個物件都能知道他的方法,反射的主要用途是各個框架的實現 實現:1.獲取例項物件(三種實現) 1.類.class 2.物件.getclass 3.Class.forName(“完整路徑”)

Spring Boot 試題 吐血整理 20 道 Spring Boot 試題,我經常拿來面試別人!

吐血整理 20 道 Spring Boot 面試題,我經常拿來面試別人!   面試了一些人,簡歷上都說自己熟悉 Spring Boot, 或者說正在學習 Spring Boot,一問他們時,都只停留在簡單的使用階段,很多東西都不清楚,也讓我對面試者大失所望。 下面,我給

整理統計大多數企業初中級C#.net試題(個人整理)

1.“HTML.TextBox” 和 “HTML.TextBoxFor”有什麼不同? 它們兩個輸出相同的HTML, “HTML.TextBoxFor”是強型別的,但“HTML.TextBox”不是。下面是一個例項, 它僅僅建立了一個名字為“Customer

2018年web前端經典試題總結整理

對於很多同學來說,面試就是一個考驗,很多人技術上沒有任何問題,但是就是過補了面試那一關,那麼如何提升自己的面試機率呢?當然是瞭解一些面試題了,因為很多時候,一些我們忽略的小問題可能就是企業比較看重的,所以,今天給大家整理總結了一些面試題。希望可以對大家的面試有一定的幫助,可以讓大家更從容面對招聘者的考驗。

2018年Java試題預測整理

面試是我們每個人都要經歷的事情,大部分人且不止一次,這裡給大家總結最新的2016年面試題,讓大家在找工作時候能夠事半功倍。1.Switch能否用string做引數?a.在 Java 7 之前, switch 只能支援byte,short,char,int 或者其

2016年終前端HTML5開發試題彙總整理

2016年終前端HTML5開發面試題彙總整理,僅部分問題有答案,其他請自行解決處理。 一、HTML常見題目 01、Doctype作用?嚴格模式與混雜模式如何區分?它們有何意義? 02、HTML5 為什麼只需要寫 <!DOCTYPE HTML>? 答:

C++面向物件試題知識點整理

面向物件 a.程式設計是在計算機中反映世界 面向系統設計帶來的種種便利 (1)良好的可複用性 (2)易維護 (3)良好的可擴充性 b.以下選項中哪一個不是面向物件設計? (1)面向物件設計的三原則:繼承,封裝,多型 (2)里氏代換原則是繼承複用的基石 (3)開閉原則是面向物

試題吐血整理,拿高薪必備題

一、Java基礎 1.String類為什麼是final的。 2.HashMap的原始碼,實現原理,底層結構。 3.反射中,Class.forName和classloader的區別 4.session和cookie的區別和聯絡,session的生命週期,多個服務部署時ses

一道hive試題

該面試題的原文地址:http://blog.csdn.net/zolalad/article/details/10819749# 解決思路:根據使用者ID算出訪問次數,然後根據訪問次數算出fromurl和tourl 難點主要為計算使用者訪問次數,原文的計算方法看著有點複

從一道hive試題的解決思路中理解hive應用

Hive面試題—理清hive應用思路 問題:有一張很大的表:TRLOG該表大概有2T左右。 TRLOG: CREATE TABLE TRLOG (PLATFORM string, USER_ID int, CLICK_TIME string, CLICK_URL strin