文档章节

HiveQL计算连续天数问题

K_Zhiqiang
 K_Zhiqiang
发布于 2017/08/10 10:59
字数 826
阅读 27
收藏 0
点赞 0
评论 0

现有商户每日交易汇总数据文件merch_trade_stat.txt,如下:(三列数据以','分隔,分别是商户ID、交易日期、日交易金额)

[root@node1 ~]$ more merch_trade_day_stat.txt
1,2017-07-01,100
1,2017-07-02,200
1,2017-07-03,300
1,2017-07-04,400
1,2017-07-05,500
1,2017-07-06,600
1,2017-07-07,40
1,2017-07-08,800
1,2017-07-09,900
1,2017-07-10,50
1,2017-07-11,100
1,2017-07-12,80
1,2017-07-13,300
1,2017-07-14,400
1,2017-07-15,500
2,2017-07-01,100
2,2017-07-02,200
2,2017-07-03,300
2,2017-07-04,60
2,2017-07-05,500
2,2017-07-06,600
2,2017-07-07,40
2,2017-07-08,800
2,2017-07-09,900
2,2017-07-10,50
2,2017-07-11,100
2,2017-07-12,80
2,2017-07-13,300
2,2017-07-14,400
2,2017-07-15,500

计算出每个商户日交易金额不小于100的最大连续天数:

hive> CREATE TABLE merch_trade_day_stat(
    >     merch_id string COMMENT '商户ID',
    >     date_key string COMMENT '交易日期',
    >     tx_amt int COMMENT '日交易金额'
    > ) ROW FORMAT DELIMITED
    >  FIELDS TERMINATED BY ',';
OK
Time taken: 0.375 seconds
hive> load data local inpath 'merch_trade_day_stat.txt' into table merch_trade_day_stat;
Loading data to table default.merch_trade_day_stat
Table default.merch_trade_day_stat stats: [numFiles=1, totalSize=443]
OK
Time taken: 0.45 seconds
hive> select * from merch_trade_day_stat;
OK
1	2017-07-01	100
1	2017-07-02	200
1	2017-07-03	300
1	2017-07-04	400
1	2017-07-05	500
1	2017-07-06	600
1	2017-07-07	40
1	2017-07-08	800
1	2017-07-09	900
1	2017-07-10	50
1	2017-07-11	100
1	2017-07-12	80
1	2017-07-13	300
1	2017-07-14	400
1	2017-07-15	500
2	2017-07-01	100
2	2017-07-02	200
2	2017-07-03	300
2	2017-07-04	60
2	2017-07-05	500
2	2017-07-06	600
2	2017-07-07	40
2	2017-07-08	800
2	2017-07-09	900
2	2017-07-10	50
2	2017-07-11	100
2	2017-07-12	80
2	2017-07-13	300
2	2017-07-14	400
2	2017-07-15	500
Time taken: 0.069 seconds, Fetched: 30 row(s)
hive> select a.merch_id,
    >        max(a.continue_days) as max_continue_days
    >     from(select a.merch_id,
    >                 count(a.date_key) as continue_days
    >             from(select merch_id,
    >                         date_key,
    >                         date_sub(date_key, row_number() over(partition by merch_id order by date_key)) as tmp_date
    >                     from merch_trade_day_stat
    >                     where tx_amt >= 100
    >                 ) a
    >             group by a.merch_id, a.tmp_date
    >         ) a
    >     group by a.merch_id;
Query ID = bd_20170810104913_29569c95-1110-4ed4-906e-b09ba6712ac7
Total jobs = 2
Launching Job 1 out of 2
Number of reduce tasks not specified. Estimated from input data size: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapreduce.job.reduces=<number>
Starting Job = job_1499860627544_0066, Tracking URL = http://ali-bj01-tst-cluster-004.xiweiai.cn:8088/proxy/application_1499860627544_0066/
Kill Command = /mnt/bd/software/hadoop/hadoop-2.6.2/bin/hadoop job  -kill job_1499860627544_0066
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
2017-08-10 10:49:18,583 Stage-1 map = 0%,  reduce = 0%
2017-08-10 10:49:24,792 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.26 sec
2017-08-10 10:49:29,929 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 2.85 sec
MapReduce Total cumulative CPU time: 2 seconds 850 msec
Ended Job = job_1499860627544_0066
Launching Job 2 out of 2
Number of reduce tasks not specified. Estimated from input data size: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapreduce.job.reduces=<number>
Starting Job = job_1499860627544_0067, Tracking URL = http://ali-bj01-tst-cluster-004.xiweiai.cn:8088/proxy/application_1499860627544_0067/
Kill Command = /mnt/bd/software/hadoop/hadoop-2.6.2/bin/hadoop job  -kill job_1499860627544_0067
Hadoop job information for Stage-2: number of mappers: 1; number of reducers: 1
2017-08-10 10:49:40,581 Stage-2 map = 0%,  reduce = 0%
2017-08-10 10:49:44,691 Stage-2 map = 100%,  reduce = 0%, Cumulative CPU 0.74 sec
2017-08-10 10:49:49,826 Stage-2 map = 100%,  reduce = 100%, Cumulative CPU 1.93 sec
MapReduce Total cumulative CPU time: 1 seconds 930 msec
Ended Job = job_1499860627544_0067
MapReduce Jobs Launched:
Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 2.85 sec   HDFS Read: 9593 HDFS Write: 321 SUCCESS
Stage-Stage-2: Map: 1  Reduce: 1   Cumulative CPU: 1.93 sec   HDFS Read: 6039 HDFS Write: 8 SUCCESS
Total MapReduce CPU Time Spent: 4 seconds 780 msec
OK
1	6
2	3
Time taken: 37.05 seconds, Fetched: 2 row(s)

© 著作权归作者所有

共有 人打赏支持
K_Zhiqiang
粉丝 0
博文 22
码字总数 12098
作品 0
海淀
程序员
oracle计算连续登陆/上班天数

现在有一个计算用户连续上班天数的报表,发现通过用row_number分析函数可以完美计算这个问题。 这个SQL可以解决计算用户连续登陆、签到、上班、旷工等问题。 首先将row_number按照日期排序 ...

zxf261
2016/07/21
0
0
sql技巧(三)在线时长|最大连续登陆天数

1.在线时长 正常的游戏有登录和登出但是我们想计算下在线时长,这就涉及到根据登陆表的登录时间查找登出时间的问题,基本的原理是登陆表和登出表进行匹配,查找离一条登录记录最近的登出时间...

洛水青柳2017
2017/11/06
0
0
算法:如何计算当月签到最大天数?

其实这个问题有2个子问题: 1.如果我有一张表,有个字段叫做InsertTime,插入时间,插入时间一天可能有多个,假设我现在要统计一个月的个数,比如1号有2条记录,2号有3条记录,那么总共只算2...

KMSFan
2016/10/29
313
1
指数级加速架构搜索:CMU提出基于梯度下降的可微架构搜索方法

  选自arXiv   作者:刘寒骁、Karen Simonyan、杨一鸣   机器之心编译      寻找最优神经网络架构的任务通常需要机器学习专家花费大量时间来完成,最近人们提出的自动架构搜索方法...

机器之心
06/27
0
0
可能是github上第一款Vue全家桶+Typescript的完整项目

vue-ts-daily 基于Vue.js的2.5.13版本和TypeScript编写的模仿原生应用的WebApp. 👉项目演示地址欢迎star✨ ps: 服务器不在内地,加载可能慢点... 建议直接添加到主屏幕(ios端体验差一些). ...

寻找海蓝96
05/17
0
0
Excel 数据随机分组,看完这篇,不再烧脑细胞了

给定一定数量的数据,要求随机分成 n 组,这种问题实际中经常会遇到。例如,老师将学生随机分组讨论课本,部门将员工随机分组参加活动等等。 关于「随机」数,Excel 提供 RAND 和 RANDBETWEE...

懒人Excel
05/16
0
0
Amazon EMR(Elastic MapReduce):亚马逊Hadoop托管服务运行架构&Hadoop云服务之战:微软vs.亚马逊

http://s3tools.org/s3cmd Amazon Elastic MapReduce (Amazon EMR)简介 Amazon Elastic MapReduce (Amazon EMR) 是一种 Web 服务,提升企业、研究人员、数据分析师和开发人员轻松、经济高效掌...

长征2号
2017/08/30
0
0
大数据分析入门前必读(科普文章)

1.什么是大数据? 不弄明白这个根本性的问题,是无法深入理解今后数据分析技术和工具的意义。 大数据指的是规模超过现有数据库工具获取、存储、管理和分析能力的数据集,并同时强调并不是超过...

江边望海
2016/10/28
44
0
文华财经wh8-trend1组合-保证金20万-最大使用1.8万,年华收益21%,最大回撤9.8%

有偿提供策略编写、策略评估兼职服务: qq:1733505732 时间:18:00-22:00 组合测算报告 ------------------------------- 名称 全部交易 资金分配量 200000.00 组合合约/周期 螺纹指数/1小时...

qq_26948675
2017/09/26
0
0
朴素贝叶斯分类器的应用

生活中很多场合需要用到分类,比如新闻分类、病人分类等等。 本文介绍朴素贝叶斯分类器(Naive Bayes classifier),它是一种简单有效的常用分类算法。 一、病人分类的例子 让我从一个例子开...

阮一峰
2013/12/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java基础——异常

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 异常处理: 可以挖很多个陷阱,但是不要都是一样...

凯哥学堂
25分钟前
0
0
180723-Quick-Task 动态脚本支持框架之结构设计篇

文章链接:https://liuyueyi.github.io/hexblog/2018/07/23/180723-Quick-Task-动态脚本支持框架之结构设计篇/ Quick-Task 动态脚本支持框架之结构设计篇 相关博文: 180702-QuickTask动态脚本...

小灰灰Blog
29分钟前
0
0
SBT 常用开发技巧

SBT 一直以来都是 Scala 开发者不可言说的痛,最主要的原因就是官方文档维护质量较差,没有经过系统的、循序渐进式的整理,导致初学者入门门槛较高。虽然也有其它构建工具可以选择(例如 Mill...

joymufeng
33分钟前
0
0
HBase in Practice - 性能、监控及问题解决

李钰(社区ID:Yu Li),阿里巴巴计算平台事业部高级技术专家,HBase开源社区PMC&committer。开源技术爱好者,主要关注分布式系统设计、大数据基础平台建设等领域。连续4年基于HBase/HDFS设计和...

中国HBase技术社区
34分钟前
1
0
ES18-JAVA API 批量操作

1.批量查询 Multi Get API public static void multiGet() {// 批量查询MultiGetResponse response = getClient().prepareMultiGet().add("my_person", "my_index", "1")// 查......

贾峰uk
39分钟前
0
0
SpringBoot2.0使用health

1,引入actuator <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency> 2,application.properties ......

暗中观察
46分钟前
0
0
阿里巴巴Java开发规约

###编程规约 命名风格 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。...

简心
50分钟前
0
0
如何用TypeScript来创建一个简单的Web应用

转载地址 如何用TypeScript来创建一个简单的Web应用 安装TypeScript 获取TypeScript工具的方式: 通过npm(Node.js包管理器) npm install -g typescript 构建你的第一个TypeScript文件 创建...

durban
55分钟前
0
0
分享好友,朋友圈自定义分享链接无效

这个问题是微信6.5.6版本以后,修改了分享规则:分享的连接必须在公众号后台设定的js安全域名内

LM_Mike
今天
0
0
2018年7月23日课程

一、LVS-DR介绍 director分配请求到不同的real server。real server 处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。负载均衡器仅处理一半的连接,避免了...

人在艹木中
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部