hive 導出數據到本地


有時候需要將hive庫中的部分數據導入至本地,這樣子做可視化和小規模的數據挖掘實驗都是比較方便的。數據導入至本地的HQL語法如下:
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1;
但是hive對字段分隔時默認使用的分隔符是^A,使用文本編輯器打開文件顯示出來就是亂碼,同時,后續提取字段值時需要指定這個特殊的分隔符,在python中使用line.split('\x01')來進行切分在java中split("\\u0001")來進行切分。

網上看到的方案都是上述這種使用默認分隔符進行切分的,不管是數據查看還是程序調試,都不太方便。但是,既然hive支持在建表的時候指定字段分隔符,hive在數據導出時應該也支持的。HQL建表時指定分隔符的語法為:

 

	CREATE TABLE u_data (
  		userid INT,
  		movieid INT,
  		rating INT,
  		unixtime STRING)
	ROW FORMAT DELIMITED
	FIELDS TERMINATED BY '\t';
想必在數據導出時,應該可以ROW FORMAT DELIMITED FIELDS TERMINATED BY 的方式來指定我們自定義的分隔符。於是,實驗了一把,結果如我所願。

用戶指定分隔符來進行數據導出,比如我們會使用\t進行字段分割,那么HQL語法如下:
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 

select_statement1;

 

最后,只有在hive0.12及以上版本才支持該語法哦,hive0.12以下版本的,請自行探索吧。

 

原文鏈接: https://blog.csdn.net/zbc1090549839/article/details/53782367
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM