HIVE:hivevar、hiveconf與define引數的差異與用法
阿新 • • 發佈:2019-01-24
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;