如何从一个select-in配置单元导出多个文件

dw1jzc5e  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(260)

我是hive和hadoop的初学者。我在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

我想在输出中有n个平面文件,按dep分组,并命名为datafile\u dep:
第一个文件

2012;1;6774

 2013;1;7082

 2014;1;6377

 2015;1;7319

第二个文件

2005;94;7893

 2006;94;8620

 2007;94;8144

等等。每次我有一个新的dep创建新的文件。
我该怎么做?非常感谢你的帮助

46scxncf

46scxncf1#

配置单元不提供任何现成的工具来创建具有已定义文件名的文件。
使用hive动态分区可以解决一半的问题,请阅读这里。创建另一个在上分区的表 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;

作为配置单元分区,存储在hdfs目录上的数据和每个分区列的值都符合单独的hdfs路径。每个dep值在dep\u分区表位置上都有单独的目录,接下来使用bash脚本为每个dep目录创建单独的文件。
我希望这有帮助。

相关问题