You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Apache Pig统计每年气温超80度天数的方法问询

看起来你已经走了大半流程啦,就差提取年份和最后统计这两步,我给你补全整个完整的Pig脚本,顺便解释下关键部分:

完整实现流程

1. 加载数据集

首先把你的每日气温数据加载进来,指定字段类型(日期是字符串,气温是整数):

data = LOAD '/path/to/your/dataset' USING PigStorage(',') AS (date_str:chararray, max_t:int);

2. 提取年份

因为你的日期格式是固定的yyyy-mm-dd,直接用SUBSTRING函数截取前4位就能拿到年份:

with_year = FOREACH data GENERATE SUBSTRING(date_str, 0, 4) AS year:chararray, max_t;

小提示:Pig的SUBSTRING是左闭右开规则,SUBSTRING(s, 0,4)会取索引0-3的字符,正好是4位年份数字。

3. 筛选高温记录

你提到的SPLIT方法可行,但如果只需要保留气温超80度的数据,用FILTER会更高效(不用拆分出不需要的数据集):

hot_records = FILTER with_year BY max_t > 80;

要是你坚持想用SPLIT,写法是这样的:

SPLIT with_year INTO hot_records IF max_t > 80, cold_records OTHERWISE;

4. 按年份分组统计天数

分组后用COUNT函数统计每组的记录数,也就是对应年份的高温天数:

grouped_by_year = GROUP hot_records BY year;
yearly_hot_days = FOREACH grouped_by_year GENERATE group AS year, COUNT(hot_records) AS days;

5. 查看或保存结果

用DUMP直接在控制台输出结果(就是你要的(1993, 21)这种元组格式),或者用STORE保存到文件:

DUMP yearly_hot_days;
-- 或者保存到指定路径
STORE yearly_hot_days INTO '/path/to/output' USING PigStorage(',');

把这些步骤按顺序运行,就能得到各年份对应高温天数的结果啦~

内容的提问来源于stack exchange,提问作者Zrpizzaguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:00:17