zoukankan      html  css  js  c++  java
  • hive 面试题

    使用 Hive或者自定义 MR 实现如下逻辑
    product_no lac_id moment start_time user_id county_id staytime city_id
    13429100031 22554 8 2013-03-11 08:55:19.151754088 571 571 282 571
    13429100082 22540 8 2013-03-11 08:58:20.152622488 571 571 270 571
    13429100082 22691 8 2013-03-11 08:56:37.149593624 571 571 103 571
    13429100087 22705 8 2013-03-11 08:56:51.139539816 571 571 220 571
    13429100087 22540 8 2013-03-11 08:55:45.150276800 571 571 66 571
    13429100082 22540 8 2013-03-11 08:55:38.140225200 571 571 133 571
    13429100140 26642 9 2013-03-11 09:02:19.151754088 571 571 18 571
    13429100082 22691 8 2013-03-11 08:57:32.151754088 571 571 287 571
    13429100189 22558 8 2013-03-11 08:56:24.139539816 571 571 48 571
    13429100349 22503 8 2013-03-11 08:54:30.152622440 571 571 211 571
    字段解释:
    product_no:用户手机号;
    lac_id:用户所在基站;
    start_time:用户在此基站的开始时间;
    staytime:用户在此基站的逗留时间。

    需求描述:

    根据 lac_id和 start_time知道用户当时的位置,根据 staytime知道用户各个基站的逗留时长。根据轨迹合
    并连续基站的 staytime。
    最终得到每一个用户按时间排序在每一个基站驻留时长

    期望输出举例:
    13429100082 22540 8 2013-03-11 08:58:20.152622488 571 571 270 571
    13429100082 22691 8 2013-03-11 08:56:37.149593624 571 571 390 571
    13429100082 22540 8 2013-03-11 08:55:38.140225200 571 571 133 571
    13429100087 22705 8 2013-03-11 08:56:51.139539816 571 571 220 571
    13429100087 22540 8 2013-03-11 08:55:45.150276800 571 571 66 571

    hive实现:

    select t.p,t.l,t.start,t.stay from (select b.product_no p,b.lac_id l,b.start_time start,b.staytime stay from net_time_sum a right outer join net_time b on a.product_no=b.product_no and a.lac_id = b.lac_id where a.product_no is  NULL union all select t1.p,t1.l,t1.start,t1.stay from (select c.product_no p,c.lac_id l,c.start_time start,c.staytime+d.staytime stay from net_time c left outer join net_time d on c.product_no=d.product_no and c.lac_id=d.lac_id where unix_timestamp(c.start_time)+c.staytime>unix_timestamp(d.start_time) and c.start_time<d.start_time)t1)t order by t.p,t.start desc;

    MR实现:

    思路为:

    1、第一次mr

    按照product_no lac_id 分组,然后对相同的分组,values进行排序,如果第一次的记录start_time+staytime >第二次start_time 并且 1.start_time<2.start_time 则进行合并

    2、第二次mr

    实现对第一次的输出进行按照start_time 进行排序

  • 相关阅读:
    原创《小白的Java自学课》第一课:Java是什么?Java到底能干嘛?
    谷歌chrome浏览器
    QT学习之QPair类
    char 与 signed char 和 unsigned char三者之间的关系
    QT学习之QT判断界面当前点击的按钮和当前鼠标坐标
    QT学习之QScript
    QT Creater 配色方案及下载
    QT学习之QString的arg方法
    QT创建与调用Dll方法(包括类成员)--显式调用
    C++学习之显式类型转换与运行时类型识别RTTI
  • 原文地址:https://www.cnblogs.com/ggbond1988/p/5037704.html
Copyright © 2011-2022 走看看