实战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

相关文章

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据