1. 程式人生 > >hive 導出數據到本地

hive 導出數據到本地

數據 over 導出 應該 sel hql 文本編輯器 pop log

有時候需要將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

hive 導出數據到本地