hive 導出數據到本地
阿新 • • 發佈:2018-06-08
數據 over 導出 應該 sel hql 文本編輯器 pop log
有時候需要將hive庫中的部分數據導入至本地,這樣子做可視化和小規模的數據挖掘實驗都是比較方便的。數據導入至本地的HQL語法如下:
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1;
但是hive對字段分隔時默認使用的分隔符是^A,使用文本編輯器打開文件顯示出來就是亂碼,同時,後續提取字段值時需要指定這個特殊的分隔符,在python中使用line.split(‘\x01‘)來進行切分在java中split("\\u0001")來進行切分。
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 導出數據到本地