1. 程式人生 > 其它 >Hadoop和Hive小測

Hadoop和Hive小測

技術標籤:hiveHadoophivehadoop

一、什麼是動態分割槽

靜態分割槽與動態分割槽的主要區別:
    ①:靜態分割槽是手動指定,而動態分割槽是在插入資料時有查詢語句決定。
    ②: 靜態分割槽一次只能匯入一個分割槽的分割槽的資料,動態分割槽可以在執行SQL時將所有分割槽的資料全部匯入

二、 為什麼使用動態分割槽

從業務層面:
    ①:當我們在業務中頻繁的對某一個欄位分割槽聚合時,就會將該欄位作為分割槽欄位來設定分割槽,
    ②: 在分散式計算框架中減少資料的IO遷移帶來的負載,從而提升效率,效能
從技術層面:
    在我們建立一個分割槽表後,需要將大量的資料插入到該表,動態分割槽可以一次性的將這些資料匯入分割槽中
    (與靜態分割槽不一樣,靜態分割槽一次只能匯入一個分割槽的資料)

三、怎麼建立動態分割槽

set hive.exec.dynamic.partition=true               開啟動態分割槽
set hive.exec.dynamic.partition.mode=nonstrict     開啟動態分割槽的非嚴格模式

四、HDFS實現檔案上傳的流程

①: Client通過distributeFileSystem向NameNode申請上傳檔案,NameNode接到請求後首先會校驗是否已經存在該檔案,若存在,則向Client返回異常,不存在則返回可以上傳,Client接到可以長傳的命令後,將檔案切分成大小為128M的block塊,然後再次先NameNode申請該block塊的上傳位置,NameNode會根據當前叢集各節點的執行情況返回三個節點給Client,(預設三個備份)

五 Hive中資料快取技術以及區別

三種: 檢視      臨時表     with查詢
在大家不是特別理解這三個技術的情況下都可以將他們理解為臨時表,都是用來快取資料
在我們進行查詢時,多次使用到子查詢就可以將他們生成檢視,臨時表,或者with查詢(多次使用)

不同點:(作用域不同)
  ①檢視:永久(只要不刪除就會存在),但是檢視只是一個邏輯結構,只有在我們查詢這個檢視時才會將資料載入到記憶體中,不查的時候只是一條SQL語句
  ②:臨時表:存在於當前的連線的客戶端,且各客戶端不能共享,如果斷開連線,就會被自動刪除(存在於記憶體中)
  ③:with查詢:存在於當前的查詢中,出了當前的查詢就會失效

六、shuffle流程

七、Hive優化中並行化和序列化是什麼,為什麼要使用這種手段

八、hive的資料傾斜以及解決方法