Hive练习题之流量统计

需求: 统计每个用户各时间段的流量总计(相隔不超过10分钟的算在一起)

数据源:

1,2020-02-18 14:20:30,2020-02-18 14:46:30,20
1,2020-02-18 14:47:20,2020-02-18 15:20:30,30
1,2020-02-18 15:37:23,2020-02-18 16:05:26,40
1,2020-02-18 16:06:27,2020-02-18 17:20:49,50
1,2020-02-18 17:21:50,2020-02-18 18:03:27,60
2,2020-02-18 14:18:24,2020-02-18 15:01:40,20
2,2020-02-18 15:20:49,2020-02-18 15:30:24,30
2,2020-02-18 16:01:23,2020-02-18 16:40:32,40
2,2020-02-18 16:44:56,2020-02-18 17:40:52,50
3,2020-02-18 14:39:58,2020-02-18 15:35:53,20
3,2020-02-18 15:36:39,2020-02-18 15:24:54,30

建表

CREATE TABLE IF NOT EXISTS test.tb_flow(
uid int,
start_time timestamp,
end_time timestamp,
flow double
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";

创建并导入数据

vim /doit16/flow.txt 
LOAD DATA LOCAL INPATH "/doit16/flow.txt" INTO TABLE test.tb_flow;

解法

select 
  uid,
  min(start_time) as start_time,
  max(end_time) as end_time,
  sum(flow) as total_flow
  from 
(
    select 
    uid,
    start_time,
    end_time,
    flow,
    sum(cn) over(partition by uid order by start_time) as flag
    from 
      (
       select 
       uid,
       start_time,
       end_time,
       flow,
       if ((unix_timestamp(start_time) - unix_timestamp(lag_time) )  / 60 > 10 ,1,0) as cn
       from
          (
           select 
           uid,
           start_time,
           end_time,
           flow,
           lag(end_time,1,start_time) over(partition by uid order by start_time) as lag_time
           from tb_flow) t1 ) t2 ) t3
group by uid, flag

在这里插入图片描述

<think>好的,用户需要中国电信大数据开发岗位的面试题和准备资料。首先,我需要整理常见的面试题目,特别是大数据相关的技术问题。根据提供的引用内容,Hadoop、HDFS、HBase这些是重点,比如NameNode、DataNode的作用,HBase的读写流程等。另外,用户提到的引用5详细描述了HDFS的架构,可以引用这部分内容来解释相关问题。 接下来要考虑大数据开发中的具体技术,比如MapReduce、Spark、数据存储和处理流程。用户提供的引用3提到了Hadoop面试题,包括SecondaryNameNode、DataNode、TaskTracker等组件,这些可以作为问题的一部分。同时,用户可能还需要了解数据处理工具和框架,比如Hive、Kafka、Flink等,这些都是大数据开发中的常用技术。 然后是关于项目经验和实际应用的问题。引用1提到大数据在医疗、金融等领域的应用,用户可能需要准备如何将技术应用到实际场景中的例子。此外,系统设计题也是常见的,比如设计实时数据管道或数据仓库,这需要结合Hadoop生态系统组件来回答。 在准备资料方面,官方文档、书籍如《Hadoop权威指南》是基础。刷题平台和模拟面试可以帮助巩固知识。用户还需要注意电信行业的特定应用,比如用户行为分析或日志处理,可能需要结合电信的业务场景来准备案例。 最后,面试技巧部分,沟通表达和问题分析能力同样重要。用户需要练习清晰表达技术概念,并在遇到难题时展示解决问题的思路。引用4提到的格局视野问题,如对人工智能行业的认识,可能也会在面试中出现,需准备相关趋势和应用场景的回答。 需要确保所有技术术语使用正确的LaTeX格式,比如HDFS组件用$NameNode$,数学公式用$...$。同时,根据用户提供的引用,正确标注来源,例如在HDFS架构部分引用[^5]。整理过程中还要检查是否有遗漏的技术点,比如数据优化方法或集群调优,确保覆盖全面。</think>### 中国电信大数据开发岗位面试题及准备资料 #### 一、技术类面试题整理 1. **Hadoop生态相关** - 解释HDFS的架构,$NameNode$和$DataNode$的作用是什么?[^5] - 简述MapReduce的工作流程,并说明Shuffle阶段的作用。 - HBase的读写流程是怎样的?为什么适用于电信领域的海量数据存储?[^3] - 如何优化Hive查询性能?(如分区、分桶、索引等) 2. **数据存储与处理** - 对比HDFS与对象存储(如S3)的优缺点。 - Kafka如何保证高吞吐量和数据一致性? - 描述Spark RDD的容错机制,并说明与MapReduce的区别。 3. **实时计算与工具** - Flink的窗口机制有哪些类型?如何应用于实时流量监控场景? - 使用HBase时,RowKey设计需要注意哪些原则? 4. **编程与算法** - 手写SQL:统计用户通话时长Top 10(表结构:`user_id, call_time, duration`)。 - 实现快速排序算法(需注意时间复杂度和稳定性)。 --- #### 二、系统设计类问题 1. **场景题** - 设计一个电信用户行为分析系统,需支持实时统计和离线报表。 **关键点**:数据采集(Flume/Kafka)、实时计算(Flink)、存储(HBase+Hive)、可视化(Superset)。 - 如何构建一个高可用的Hadoop集群?说明$NameNode$ HA的实现方式[^5]。 2. **数据治理** - 若发现Hive数据倾斜,如何定位和解决? - 描述数据仓库分层设计(ODS、DWD、DWS、ADS)及其在电信业务中的应用。 --- #### 三、行业与应用类问题 1. **电信业务场景** - 如何利用大数据技术优化基站信号覆盖问题?(如基于用户位置数据分析) - 举例说明大数据在电信反欺诈中的应用[^1]。 2. **技术趋势** - 谈谈你对“数据湖”和“数据仓库”融合的看法。 - 电信行业的数据隐私保护有哪些特殊要?(参考GDPR和国内法规) --- #### 四、准备资料推荐 1. **官方文档与书籍** - 《Hadoop权威指南》(重点:HDFS、MapReduce、YARN) - 《HBase原理与实践》(读写流程、RowKey设计)[^3] - Apache Flink官方文档(实时计算核心概念) 2. **刷题与实战** - LeetCode数据库/算法题(中等难度,如窗口函数、JOIN优化) - 牛客网/HackerRank大数据专项题库 - 模拟项目:从GitHub克隆电信日志分析项目(如基于Spark的CDR分析) 3. **面试技巧** - 重点准备项目中的技术选型理由和问题解决案例。 - 针对电信行业,熟悉用户画像、流量监控等业务术语。 --- #### 五、注意事项 1. **技术深度**:确保对Hadoop生态组件(如YARN、ZooKeeper)的原理有清晰理解。 2. **业务结合**:回答时需关联电信场景,例如:“在用户漫游分析中,HBase的稀疏存储特性可有效节省成本”。 3. **代码规范**:手写代码时注意边界条件和注释,如快速排序需处理重复元素[^示例代码]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值