2017-05-25 69 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

相关问题