Hive官方使用手冊——HCatalog CLI
Set Up
HCatalog命令列介面(CLI)可以被呼叫為HIVE_HOME=
hive_home hcat_home/bin/hcat
,其中hive_home是已安裝Hive的目錄,hcat_home是已安裝HCatalog的目錄。
如果您正在使用BigTop的rpm或deb,您可以使用 /usr/bin/hcat
來呼叫CLI。
HCatalog CLI
HCatalog CLI支援這些命令列選項。:
引數 | 用例 | 描述 |
---|---|---|
-g |
| 告訴HCatalog需要建立的表必須有group“mygroup”。 |
-p |
| 告訴HCatalog需要建立的表必須具有許可權“rwxr-xr-x”。 |
-f |
| 告訴HCatalog myscript.hcatalog是一個包含待執行的DDL命令的檔案。 |
-e |
| 告訴HCatalog將以下字串視為DDL命令並執行它。 |
-D |
| 將鍵值對傳遞給HCatalog作為Java系統屬性。 |
hcat | 列印一個用例資訊 |
請注意以下:
-g和-p選項不是強制性的。
只能提供一個-e或-f選項,而不是兩個。
引數選項的順序不是固定的;您可以按任何順序指定選項。
如果沒有提供選項,則列印一條使用訊息:
Usage: hcat { -e "<query>" | -f <filepath> } [-g <group>] [-p <perms>] [-D<name>=<value>]
所有者的許可權
當使用HCatalog CLI時,您不能指定一個許可權字串而不賦予所有者讀取的許可權,比如-wxrwxr-x,因為字串以“-”開頭。如果需要這樣的許可權設定,則可以使用八進位制數,在本例中相應的值為375。另外,其它格式的許可權字串(例如r-x-----
或rrr-)都可以正常工作。
與Hive CLI的差異
許多hcat命令可以作為hive命令發出,包括所有HCatalog DDL命令。Hive CLI包含一些在HCatalog CLI中不可用的命令。注意這些差異:
- "
hcat -g
" 和 "hcat -p
" 對於表組和許可權設定,僅在HCatalog CLI中可用。 - hcat使用
-p
標誌來獲得許可權,但hive使用它來指定埠號。 - hcat使用
-D
標誌且沒有空格來定義key=value,但是hive使用-d或--define
和一個空格(同樣是--hivevar
)。 - hcat列印幫助資訊沒有任何標誌的,但是hive使用-H標誌或--help。
Hive CLI文件參見這裡。
HCatalog DDL
HCatalog支援所有Hive資料定義語言,除了那些需要執行MapReduce作業的操作。對於支援的命令,下面將講述其所有的差異。
HCatalog不支援以下Hive DDL和其他HiveQL命令:
- ALTER INDEX ... REBUILD
- CREATE TABLE ... AS SELECT
- ALTER TABLE ... CONCATENATE
- ALTER TABLE ARCHIVE/UNARCHIVE PARTITION
- ANALYZE TABLE ... COMPUTE STATISTICS
- IMPORT FROM ...
- EXPORT TABLE
Create/Drop/Alter Table
CREATE TABLE
如果您建立了一個帶有CLUSTERED BY語法的表,那麼您將無法用Pig或MapReduce來編寫它。這是因為他們不知道如何劃分表,所以試圖寫入它會導致資料損壞。
CREATE TABLE AS SELECT
不支援。丟擲一個異常,該訊息“不支援操作”。
DROP TABLE
支援。和Hive一樣。
ALTER TABLE
支援,除了重建REBUILD和連線CONCATENATE選項。行為和Hive一樣。
Create/Drop/Alter View
注意: Pig和MapReduce不能讀取或寫入檢視。
CREATE VIEW
支援,和Hive一樣。
DROP VIEW
支援,和Hive一樣。
ALTER VIEW
支援,和Hive一樣。
Show/Describe
SHOW TABLES
支援,和Hive一樣。
SHOW PARTITIONS
不支援。丟擲一個異常,該訊息“不支援操作”。
SHOW FUNCTIONS
支援,和Hive一樣。
DESCRIBE
支援,和Hive一樣。
Create/Drop Index
CREATE 和 DROP INDEX 操作時支援的。
注意: Pig和MapReduce不能寫入一個有自動重建的表,因為Pig和MapReduce不知道如何重建索引。
Create/Drop Function
CREATE 和 DROP FUNCTION 操作是支援的, 但是,建立的函式仍然必須在Pig中註冊,並放置在MapReduce的類路徑中。
"dfs" Command and "set" Command
支援,和Hive一樣。
Other Commands
上面沒有列出的任何命令都不受支援,並丟擲一個“不支援的操作”的異常。
CLI Errors
Authentication
如果一個失敗導致了一個訊息,比如“2010-11-03 16:17:28,225 WARN hive.metastore ... - Unable to connect metastore with URI thrift://...“在 /tmp/
<username>/hive.log
中,請確認執行“kinit
<username>@FOO.COM
”獲取一個Kerberos票據,並能夠對HCatalog伺服器進行身份驗證。
Error Log
如果在使用HCatalog CLI時發生了其他錯誤,則會將更詳細的訊息寫入/tmp/<username>/hive.log。