2012-08-16 142 views
8

我有一些HIVE數據,我希望在LibreOffice中看到它。將HIVE導出爲CSV

如何導出這些數據以後導入它的LibreOffice

+1

歡迎的StackOverflow!你到目前爲止嘗試了什麼,以及你對目前的方法有什麼擴展? – Olaf 2012-08-20 16:02:06

+0

我創建了perl腳本: use Text :: CSV; my $ csv = Text :: CSV-> new()或死「不能使用CSV:」.Text :: CSV-> error_diag(); $ csv-> eol(「\ r \ n」); while(my $ line = readline){ chomp $ line; my @cols = split/\ x01 /,$ line; $ csv-> print(* STDOUT,\ @cols); } – user1356713 2012-08-29 08:31:36

回答

0

您可以指定和自定義如何存儲由蜂巢SERDE機制的表。 感謝ogrodnek用戶在GitHub上,有CSV SerDe的實現。

這是一種過時的(蜂巢0.5),但可以很容易地採用到新的蜂巢版本。 所有我必須做的成功與它 - 只需更改構建配置我的配置單元分佈和版本(我使用pom.xml爲maven在kunkunur的拉請求),並將此行添加到CSVSerde.java以滿足新的API:

import org.apache.hadoop.hive.serde2.SerDeStats; 
.... 
.... 
@Override 
public SerDeStats getSerDeStats() { 
// no support for statistics 
return null; 
} 

然後,你可以運行hadoop dfs -get /table/or/partition/location /local/destination(甚至使用與管道或單一文件輸出-cat)加載從Hadoop的數據 - 這將是已經在CSV格式。

21

基於https://issues.apache.org/jira/browse/HIVE-1603

$ hive 
hive> set hive.exec.compress.output=false; 
hive> create table csv_dump ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' as 
hive> select ...YOUR_SELECT_QUERY_HERE...; 
$ hadoop dfs -cat /user/hive/warehouse/csv_dump/* > ~/csv_dump.csv 
+1

現在最近的命令已被棄用。等價的新命令幾乎相同 - 「hadoop fs -cat/user/hive/warehouse/csv_dump/*>〜/ csv_dump.csv」。關鍵問題是hadoop將hive表映射到fs命名空間/用戶/配置單元/倉庫。 – sandeepkunkunuru 2014-04-18 04:34:28

1

我也有類似的問題,這是我如何能夠解決這一問題。

第1步 - 從加載配置單元表中的數據到另一個表如下

DROP TABLE IF EXISTS TestHiveTableCSV; CREATE TABLE TestHiveTableCSV ROW FORMAT DELIMITED FIELDS TERMINATED BY','LINES TERMINATED BY'\ n'AS SELECT Column List FROM TestHiveTable;

第2步 - 復​​制的團塊從蜂巢倉庫到新的位置與相應的擴展

啓動AzureStorageBlobCopy -DestContext $destContext -SrcContainer 「源容器」 -SrcBlob "hive/warehouse/TestHiveTableCSV/000000_0" -DestContainer 「目的地集裝箱」` - DestBlob「CSV/TestHiveTable.csv」

希望這有助於!

最好的問候, Dattatrey Sindol(達塔) http://dattatreysindol.com