Hive Getting Started補充

不要亂摸發表於2017-12-28

配置管理概述

  • 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中載入資料的結果就是移動檔案或目錄,因此,這個操作非常快。

 

相關文章