在hive-0.8.0後引入了import/export命令。工具
Export命令能夠導出一張表或分區的數據和元數據信息到一個輸出位置,而且導出數據能夠被移動到另外一個hadoop集羣或hive實例,而且能夠經過import命令導入數據。oop
當導出一個分區表,原始數據可能在hdfs的不一樣位置,export/import命令也支持導出分區表的不一樣子分區。對象
導出的元數據存儲在目標目錄,而且數據文件是存儲在不一樣的子目錄下。hadoop
Export/import命令能夠獨立工做在使用存儲元數據的rdbms中。get
1、語法it
Export語法:io
EXPORT TABLE tablename [PARTITION (part_column="value"[, ...])]event TO 'export_target_path' [ FOR replication('eventid') ]table |
Import語法:ast
IMPORT [[EXTERNAL] TABLE new_or_original_tablename [PARTITION (part_column="value"[, ...])]] FROM 'source_path' [LOCATION 'import_target_path'] |
2、使用複製:
Export/import命令當在複製環境中使用時略有不一樣,而且肯定使用該工具在兩個數據倉庫之間使用複製。在大多數狀況下,用戶不須要使用這個附加功能,除非手動引導倉庫之間的複製,這樣它能夠做爲一個增量複製工具。
他們使用一個特殊的表屬性「repl.last.id」在一個表或分區對象中,確保export/import工具每次複製的數據時最近更新的數據。在導出完成後,會對export的dump文件使用一個id打一個複製標籤,表示在源倉庫集成商單調遞增的。此外,爲複製導出打印的標記不會致使錯誤若是試圖導出一個對象可是標記列當前不存在。
在import方面,沒有語法變化,可是import有一個通常性的標籤對於複製的dump文件,他講檢查要複製的對象是否存在,若是對象已經存在,它檢查對象的repl.last.id屬性,肯定是否導入當前對象的最新數據對於目標倉庫,若是更新是最新的,那麼它將複製最新的信息,若是更新已是很舊的了對於已經存在的對象,那麼更新將被忽略,而且不會產生錯誤。
對於那些使用export進行首次手動引導用例,用戶推薦使用「引導」標籤,
3、示例
一、簡單導入和導出
export table department to 'hdfs_exports_location/department'; import from 'hdfs_exports_location/department'; |
二、在import時重命名錶
export table department to 'hdfs_exports_location/department'; import table imported_dept from 'hdfs_exports_location/department'; |
三、導出分區而且導入
export table employee partition (emp_country="in", emp_state="ka") to 'hdfs_exports_location/employee'; import from 'hdfs_exports_location/employee'; |
四、導出表而且導入到分區表分區
export table employee to 'hdfs_exports_location/employee'; import table employee partition (emp_country="us", emp_state="tn") from 'hdfs_exports_location/employee'; |
五、指定導入位置
export table department to 'hdfs_exports_location/department'; import table department from 'hdfs_exports_location/department' location 'import_target_location/department'; |
六、導入做爲一個外部表
export table department to 'hdfs_exports_location/department'; import external table department from 'hdfs_exports_location/department'; |