1. 程式人生 > >HIVE:hivevar、hiveconf與define引數的差異與用法

HIVE:hivevar、hiveconf與define引數的差異與用法

HIVE CLI中有三種定義屬性或變數的引數,分別是:

1. hiveconf

hiveconf用於定義HIVE執行上下文的屬性(配置引數),可覆蓋覆蓋hive-site.xml(hive-default.xml)中的引數值,如使用者執行目錄、日誌列印級別、執行佇列等,常用的配置屬性如下:

引數名稱 引數解釋
hive.metastore.warehouse.dir 啟動時指定使用者目錄,不同的使用者不同的目錄
hive.cli.print.current.db 顯示當前資料庫
hive.root.logger 輸出日誌資訊
hive.cli.print.header 顯示列名稱

如果熟悉HIVE操作的話,這些配置屬性還可以利用“set”指令進行修正,如下:

# 首先啟動HIVE
hive
# 然後設定引數
set mapred.job.queue.name=root.default

上面的指令可等價於“hive --hiveconf”命令,如下:

hive --hiveconf "mapred.job.queue.name=root.default"

2. hivevar

hivevar用於定義HIVE執行時的變數替換,類似於JAVA中的“PreparedStatement”,與“${}”配合使用,示例如下:

#  定義變數,並啟動HIVE CLI
hive --hivevar my="201809" --database mydb # 執行SQL select * from mydb where concat(year, month) = ${my} limit 10;

3. define

define與hivevar用途完全一樣,還有一種簡寫“-d”,示例如下:

#   定義變數
hive --hiveconf "mapred.job.queue.name=root.default" -d my="201809" --database mydb
#   執行SQL
select * from mydb where concat(year, month)
= ${my} limit 10;