我正在尝试将数据分组并在hdfs中存储每个'名称的文件夹。以及每个“年份”的子文件夹和#39;在每个名称文件夹下。
输入:
(Date) (name) (col3) (col4)
2015-02-02 abc y z
2016-01-02 xyz i j
2015-03-02 abc f b
2015-02-06 abc y z
2016-03-02 xyz a q
预计在hdfs:
abc 文件夹
->201502 subfolder
2015-02-02 abc y z
2015-02-06 abc y z
->201503 subfolder
2015-03-02 abc f b
xyz 文件夹
->201601 subfolder
2016-01-02 xyz i j
->201603 subfolder
2016-03-02 xyz a q
在按日期对元组进行分组后,我不确定如何在Name列上使用Multistorage选项。
答案 0 :(得分:0)
首先通过名称过滤创建两个关系
您可以使用子字符串为DATE子文件夹
创建新字段CONCAT(SUBSTRING($0,0,4),SUBSTRING($0,5,7)
现在使用此字段作为MultiStorage中的文件夹名称
答案 1 :(得分:0)
如果您有HCatalog,可以按照以下步骤操作:
使用HCatalog
创建如下分区表hcat -e&#34;创建外部表TABLE_NAME(col3字符串,col4字符串)分区(日期字符串,名称字符串)location&#39; / user / $ USER / multi_partition&#39;&#34; < / p>
使用以下pig语句将数据加载到该表:
A = LOAD&#39; Input.dat&#39;使用PigStorage()作为(日期:chararray,名称:chararray,col3:chararray,col4:chararray);
存储INTO&#39; TABLE_NAME&#39;使用org.apache.hive.hcatalog.pig.HCatStorer();