Hive三種不同的數據導出的方式


轉自:http://blog.chinaunix.net/uid-27177626-id-4653808.html

 

Hive三種不同的數據導出的方式,根據導出的地方不一樣,將這些方法分為三類:
1)導出到本地文件系統

2)導出到HDFS

3)導出到hive的另一個表中

導出到本地文件系統

執行:

hive> insert overwrite local directory '/root/student'

> select * from student;

通過insert overwrite local directoryhive中的表student的內容倒到本地文件系統的/root下的student目錄下,這條HQL的執行需要啟用Mapreduce完成,運行完這條語句之后,將會在本地文件系統的/root/student目錄下生成文件,這個文件是Reduce產生的結果(這里生成的文件名是000000_0),我們可以看看這個文件的內容:

可以看出這就是表student中的數據,數據之間用空格間隔開來。

注:將數據從hive倒到本地文件系統與將數據倒到hive不一樣,不能用insert into實現。

導出到HDFS

hive中的數據導出到HDFS和將數據導出到本地文件系統類似,只是命令的執行中少了一個“local”

可以查看hdfs的對應目錄,發現數據確實倒入了指定目錄。

將數據導出到hive的另一張表

即:hive> insert into table hive_student_test 
            > select id,name,sex,salary           
            > from student;               

前提是在hive中創建好目標表hive_student_test,然后執行上述操作將hive中的student表的數據依據其id,name,sex,salary字段將其導入到目標表中。查詢目標表的結果:

hive0.11.0版本中新引進了一個新的特性,也就是當用戶將hive查詢結果輸出到文件,用戶可以只用列的分隔符,而在之前的版本中是不能指定列之間的分隔符的。例如:

hive> insert overwrite local directory '/root/student'

    > row format delimited                           

    > fields terminated by '\t'                      

> select * from student;     

還可以用hive-e-f參數來導出數據,其中-e表示后面直接帶雙引號的sql語句;而-f是接一個文件,文件的內容為一個sql語句。如下所示:

執行:./hive -e "select * from student" >> /root/student11.txt 

這個得到的結果也是用\t分割的。也可以用-f實現。

執行:./hive -f /root/SQL.sql >> /root/student12.txt


免責聲明!

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



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