Apache pig 使用pig将数据存储到具有特定格式的文件中

Apache pig 使用pig将数据存储到具有特定格式的文件中,apache-pig,Apache Pig,我最近在做一个项目,需要以某种特定的格式输出最终数据。尽管我的实际数据集相当复杂。我将使用虚拟数据来解释我的问题 如果我有以下数据- 1 2 3 4 5 5 4 2 1 然后我想用pig以以下格式输出这些数据- Between 4 and 8 2 Between 1 and 5 5 注意->对于4到8之间的,我不包括4,8本身 下面的代码我已经尝试过了,但是我如何才能将4到8之间的添加到pig的最终输出中 data = LOAD 'f.txt' AS num:int; data1 = GRO

我最近在做一个项目,需要以某种特定的格式输出最终数据。尽管我的实际数据集相当复杂。我将使用虚拟数据来解释我的问题

如果我有以下数据-

1
2
3
4
5
5
4
2
1
然后我想用pig以以下格式输出这些数据-

Between 4 and 8 2
Between 1 and 5 5
注意->对于4到8之间的,我不包括4,8本身

下面的代码我已经尝试过了,但是我如何才能将4到8之间的
添加到pig的最终输出中

data = LOAD 'f.txt' AS num:int;
data1 = GROUP data BY num;
data2 = FOREACH data1 GENERATE group AS num, COUNT(data) AS count;
data3 = FILTER data2 BY count > 4 AND count < 8;
data4 = FILTER data3 BY count > 1 AND count < 5;
data=LOAD'f.txt'作为num:int;
data1=按num分组数据;
data2=FOREACH data1生成组作为num,COUNT(data)作为COUNT;
数据3=按计数>4和计数<8过滤数据2;
数据4=按计数>1和计数<5过滤数据3;

从这里开始,我不知道如何以我上面指定的格式将数据3、数据4存储在单个文件中。

创建两个过滤数据集,将它们全部计数,并将结果合并为单个输出。在写入之前,在各个计数前添加所需的文字

data = LOAD 'f.txt' AS num:int;

data3 = FILTER data BY num > 4 AND num < 8;
data4 = FILTER data BY num > 1 AND num < 5;

data3_grp = GROUP data3 ALL;
data3_count = FOREACH data3_grp GENERATE 'Between 4 and 8',COUNT(data3);

data4_grp = GROUP data4 ALL;
data4_count = FOREACH data4_grp GENERATE 'Between 1 and 5',COUNT(data4);

data5 = UNION data3_count,data4_count
data=LOAD'f.txt'作为num:int;
data3=按num>4和num<8过滤数据;
数据4=按num>1和num<5过滤数据;
data3_grp=组data3 ALL;
data3_count=FOREACH data3_grp生成“介于4和8之间”,计数(data3);
data4_grp=组data4 ALL;
data4_count=FOREACH data4_grp生成“介于1和5之间”,计数(data4);
数据5=联合数据3\u计数,数据4\u计数

创建两个过滤数据集,将它们全部计数,并将结果合并为单个输出。在写入之前,在各个计数前添加所需的文字

data = LOAD 'f.txt' AS num:int;

data3 = FILTER data BY num > 4 AND num < 8;
data4 = FILTER data BY num > 1 AND num < 5;

data3_grp = GROUP data3 ALL;
data3_count = FOREACH data3_grp GENERATE 'Between 4 and 8',COUNT(data3);

data4_grp = GROUP data4 ALL;
data4_count = FOREACH data4_grp GENERATE 'Between 1 and 5',COUNT(data4);

data5 = UNION data3_count,data4_count
data=LOAD'f.txt'作为num:int;
data3=按num>4和num<8过滤数据;
数据4=按num>1和num<5过滤数据;
data3_grp=组data3 ALL;
data3_count=FOREACH data3_grp生成“介于4和8之间”,计数(data3);
data4_grp=组data4 ALL;
data4_count=FOREACH data4_grp生成“介于1和5之间”,计数(data4);
数据5=联合数据3\u计数,数据4\u计数
1)大多数hadoop工具都可以一次读取一个文件目录2)你真的想用一行代码编写几个文件吗?3) 由于data3和data4具有相同的模式,您也许可以尝试加入/合并它们。因此,1)大多数hadoop工具可以一次读取一个文件目录2)您真的想只使用一行编写多个文件吗?3) 由于data3和data4具有相同的模式,您可以尝试加入/联合它们