实战hadoop海量数据处理系列04预热篇:窗函数row_number 从理论到实践

本文主要是介绍实战hadoop海量数据处理系列04预热篇:窗函数row_number 从理论到实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实战hadoop海量数据处理系列04预热篇:窗函数row_number 从理论到实践

作者写第一版书的时候,,hive还没有官方支持row_number,需要使用UDF来实现额外的jar;
不过幸运的是,从hive 0.11过后,官方就加入这个函数,所以入门更容易啦。

1 row_number定义

结合情景分析

row_number()over (partition by tran_idorder by timestamp desc) num  

会先根据tran_id进行分组,并在分组内部按timestamp降序排序,row_number()函数计算的值就表示某个tran_id组内部排序后的顺序编号(该编号在一个组内是连续并且唯一的) 。
更多详情,请查看here

2 实践过程

2.1 查看hive表结构

hive> desc cubey;
OK
c1                      int                                         
c2                      string                                      
Time taken: 0.093 seconds, Fetched: 2 row(s)

2.2 查看hive表的内容

hive> select * from cubey;
OK
1       str1
2       str2
3       str3
3       str31
3       str33
4       str41
4       str42
Time taken: 0.252 seconds, Fetched: 7 row(s)

2.3执行窗函数的查询1

可以看到输出内容按照第一例进行分组,按照第二组进行倒序排序,最后输出一例来表示对应组内的序号。

hive> select c1 ,c2, row_number() over> ( distrubute by c1 sort by c2 desc) rownum> from cubey;
(省略若干)  
Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 2.92 sec   HDFS Read: 267 HDFS Write: 67 SUCCESS
Total MapReduce CPU Time Spent: 2 seconds 920 msec
OK
1       str1    1
2       str2    1
3       str33   1
3       str31   2
3       str3    3
4       str42   1
4       str41   2
Time taken: 34.029 seconds, Fetched: 7 row(s)

2.4 执行窗函数的查询2

在上一小节的基础上,只取本组的第一条记录

hive> select c1,c2 from (>   select c1,c2 ,row_number() over> (distribute by c1 sort by c2 desc) rownum> from cubey )aa> where aa.rownum = 1;(省略若干)  
Total MapReduce CPU Time Spent: 3 seconds 320 msec
OK
1       str1
2       str2
3       str33
4       str42
Time taken: 27.536 seconds, Fetched: 4 row(s)

3 小结

通过案例实践典型窗函数row_number,对于etl中的关键步骤“去重”有进一步的基础。

4 其他 项目心得及思考

  • 得多熟悉hdfs 文件系统的常用命令
    比如ls -r
  • 得多熟悉hadoop /spark等官方example例子
    学习来自官方的案例可以少走很多弯路
  • 得理解hadoop内部的排序TeraSort
    有一个入门的实现可以去深入理解下,请点击这里[here](http://kubicode.me/2015/06/27/Hadoop/TeraSort-in-Hadoop/
    )

  • jar包查看class等的命令
    一般用jar tf test.jar 来查看jar包内的clas,
    有些时候,我们需要查看一个jar文件中是否包含了某个方法,这个在linux下可以通过下面的命令来查询
    grepjar methodName class.jar

4.1 活用hive的job日志

当触发hive map reduce的工作不是期望的,可以查看日志,该日志一般在/tmp/

4.2 得熟悉 常用的hadoop页面监控信息网址

以默认的端口来说,

  1. http://master:50030

查看MapReduce上的jobtracker(在启动了hdfs和MapReduce之后查阅)

  1. http://master:50060

查看MapReduce上的tasktracker(在启动了hdfs和MapReduce之后查阅)

  1. http://master:50070

查看HDFS上的节点信息(在启动了HDFS之后查阅)

  1. http://master:60010/master.jsp

查看master连点信息 (在启动了HDFS、MapReduce、ZooKeeper和HBase之后查阅)

  1. http://master:60030/regionserver.jsp

查看regionserver信息(在启动了HDFS、MapReduce、ZooKeeper和HBase之后查阅)

  1. http://master:60010/zk.jsp

查看zookeeper信息(在启动了HDFS、MapReduce、ZooKeeper和HBase之后查阅)

这篇关于实战hadoop海量数据处理系列04预热篇:窗函数row_number 从理论到实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/894385

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>