配置管理概述
- Hive從<install-dir>/conf/hive-default.xml中讀取它的預設配置
- Hive配置目錄的位置可以通過設定HIVE_CONF_DIR環境變數的值來改變
- 配置變數可以被改變,通過<install-dir>/conf/hive-site.xml中重新定義(PS:意思就是可以hive-site.xml中的配置項可以覆蓋hive-default.xml中同名的配置)
- Log4j配置儲存在<install-dir>/conf/hive-log4j.properties
- Hive配置預設繼承Hadoop配置變數
- 在hive-site.xml中可以定義任何你需要的配置變數,包括hadoop中的配置變數也是可以定義在這裡面的
Hive日誌
Hive用log4j記錄日誌,預設情況下通過命令列操作的日誌會輸出到控制檯。預設的日誌級別是INFO。
日誌檔案存放的目錄是/tmp/<user.name>
:
- /tmp/<user.name>/hive.log
通過在$HIVE_HOME/conf/hive-log4j.properties中設定hive.log.dir可以改變日誌存放的目錄,務必確保該目錄的許可權是1777
DDL操作
建立Hive表
建立一個表,名字叫做pokes,它有兩列,第一列是integer型別,第二列是string型別
建立一個表,名字叫invites。它有兩個列和一個名字叫ds的分割槽列。這個分割槽列是一個虛的列,它不是表資料的的一部分,它在將一個特別的資料集載入到分割槽的時候很有用。
DML操作
載入一個檔案到pokes表,這個檔案有兩列,列用ctrl-a分隔。'LOCAL'表示輸入檔案在本地檔案系統,如果'LOCAL'被省略的話,將從HDFS中查詢檔案。
關鍵'OVERWRITE'表示如何表中存在資料則會被刪除。如果'OVERWRITE'關鍵字被省略,那麼資料檔案則會被追加到已有的資料後面。
注意:
- 通過加裝命令加裝資料的時候不會驗證資料是否違背schema
- 如果檔案在HDFS中,那麼將被移動到Hive所控制的名稱空間中
- Hive資料的根目錄是在hive-default.xml中hive.metastore.warehouse.dir指定的
上面的兩條載入語句分別載入資料到invites表的不同分割槽中。表invites在建立的時候必須被分割槽,並且分割槽的名字叫ds。
上面這條命令從HDFS中載入資料到表中。
注意,從HDFS中載入資料的結果就是移動檔案或目錄,因此,這個操作非常快。