首页 > 解决方案 > 使用 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 本身。

我尝试过以下代码,但如何添加Between 4 and 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;

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

标签: apache-pig

解决方案


创建两个过滤数据集,将它们全部计数并将结果合并为单个输出。在写作之前,在个人计数之前添加您想要的文字文本。

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

推荐阅读