apache-pig - 使用 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 以我上面指定的格式存储在单个文件中。
解决方案
创建两个过滤数据集,将它们全部计数并将结果合并为单个输出。在写作之前,在个人计数之前添加您想要的文字文本。
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
推荐阅读
- azure-cognitive-services - 语音Azure 认知服务
- ruby - Google Calendar Ruby API insert_event 错误“each_with_index”未定义
- kubernetes-helm - helm 是否包含解包图表的方法?
- javascript - FullCalendar 4 中的自定义按钮未出现
- reactjs - 如何从 Gatsby localhost 指向 Netlify
- node.js - 将 cloudinary api 与 Epress 和 EJS 结合使用
- azure-devops - 使用 rest api 将 AAD 组添加到 Azure DevOps
- java - 发生导航时动态更改 AppLayout 中的 NavBar 内容
- c# - 添加带有消息签名的 wsse:Security 令牌
- python - 在 Python 中 gzip 文件(云函数)