2017-05-25 74 views
0

我爲初學者與HIVE和Hadoop.I在蜂巢表中加載這樣的文件:如何將多個文件從一個選擇在HIVE出口

YEAR;DEP;CAP 

2012;1;6774 

2013;1;7082 

2014;1;6377 

2015;1;7319 

2005;94;7893 

2006;94;8620 

2007;94;8144 

我想有在輸出電平的文件由DEP分組,並命名爲 datafile_DEP:

第一個文件

2012;1;6774 

2013;1;7082 

2014;1;6377 

2015;1;7319 

第二個文件

2005;94;7893 

2006;94;8620 

2007;94;8144 

等。每次我有一個新的DEP爲它創建新文件。

我該怎麼做?非常感謝您的幫助

回答

0

配置單元不提供任何實用程序來創建具有已定義文件名的文件。

您可以使用配置單元動態分區解決一半的問題,請閱讀here。創建在DEP列上分區的另一個表,然後加載數據。

--Actual table 
create table source (year int, cap int, dep int) ... 

--Partitioned table 
create table dep_partitioned (year int, cap int) PARTITIONED BY (dep int) .... 
--Enable dynamic partition 

SET hive.exec.dynamic.partition.mode=non-strict 

INSERT OVERWRITE TABLE dep_partitioned PARTITION (dep) 
SELECT year, cap, dep FROM source; 

由於Hive分區存儲在HDFS目錄中的數據和每個分區列值符合單獨的HDFS路徑。每個DEP值將在dep_partitioned表位置上具有單獨的目錄,其次爲每個DEP目錄使用bash腳本創建單獨的文件。

我希望這會有所幫助。

+0

非常感謝花時間來分析我的問題...是的,我也想分區(如在主題上看到的)......它可能是相關的! – ghjuvan

相關問題