1. 程式人生 > 其它 >CDH 中使用 Hive on Spark

CDH 中使用 Hive on Spark

前言

使用 Hive insert SQL 後檢視 Yarn 發現其跑的是 MR 方式

這裡想改用 Spark 引起來縮短 HiveQL 的響應時間

有兩種方式

  • SparkSQL
  • Hive on Spark

兩種方式都可以,看個人習慣

Hive on Spark 大體與 SparkSQL 結構類似,只是 SQL 引擎不同,但是計算引擎都是 Spark

本文主要介紹 Hive on Spark

實操

CDH Hive 配置中可以看到有官方的提示配置文件

要將 Hive 配置為在 Spark 上執行,請執行以下兩個步驟

  1. 配置 Hive 依賴項為 Spark 服務
  2. 配置 Hive 客戶端以使用 Spark 執行引擎

配置 Hive 依賴項為 Spark 服務

按照官方文件操作即可

  1. 在 Cloudera Manager 管理控制檯中,轉到 Hive 服務
  2. 單擊配置選項卡
  3. 搜尋 Spark On YARN 服務。要配置 Spark 服務,請選擇 Spark 服務名稱。要刪除依賴項,請選擇 none
  4. 點選儲存更改。
  5. 進入Spark服務。
  6. 在 HiveServer2 所在的主機上新增 Spark 的 gateway 角色(即客戶端)
  7. 重啟 Hive、Spark 服務

配置 Hive 客戶端以使用 Spark 執行引擎

CDH 中的 Hive 支援兩個執行引擎: MapReduce 和 Spark

要配置執行引擎,請執行以下步驟之一

beeline/hive: 執行 set hive.execution.engine=engine 命令,engine 選項要麼wei mr 要麼為 spark
預設為 mr

set hive.execution.engine=spark;

# 檢視當前的設定執行引擎
set hive.execution.engine;

Cloudera Manager(影響所有查詢,不推薦):

  1. 轉到 Hive 服務
  2. 單擊配置選項卡
  3. 搜尋 “execution”
  4. 將”Default Execution Engine”屬性設定為 MapReduce 或 Spark。預設值為 MapReduce
  5. 重啟 Hive 服務

優化

官方文件中提到效能

 

 暫未研究,有興趣的可以自行看看

參考連結