Hadoop&Hive
hive使用遇到的问题及其优化
小白数据猿
专注高并发,大数据,人工智能&机器学习
展开
-
Hive常见调优总结
基础设置队列选择yarn队列分配,选择合适的队列进行运行,避免都在同一个繁忙的队列中运行。SET mapreduce.job.queuename=xx;控制mapper&reducer数目合理控制文件切分的各种参数,使Mapper和Reducer数目达到一个合适的值,可以加快处理速度。// HiveInputFormat文件格式# 文件分割最大大小set mapreduce.input.fileinputformat.split.maxsize=536870912;# 文件分割最原创 2020-12-14 11:56:25 · 1272 阅读 · 0 评论 -
Hive调优之map&reduce数目
map数目确定方法Map数目的划分是由输入文件大小,个数等因素决定的,另外不同的文件输入格式切分map数目的方法也是不一样的,我们来看下Hive使用的两种输入格式的Map数目确定方法。HiveInputFormatMapTask的数目主要有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改),控制这些变量的参数如下:set hive.input.format=org.apa原创 2020-12-09 16:56:30 · 829 阅读 · 0 评论 -
Hadoop深入浅出Hadoop Streaming&MRJob
Hadoop Streaming 是Hadoop提供的一个 MapReduce 编程工具,它允许用户使用任何可执行文件、脚本语言或其他编程语言来实现 Mapper 和 Reducer 作业。Hadoop Streaming 使用了 Unix 的标准输入输出作为 Hadoop 和其他编程语言的开发接口,因此在其他的编程语言所写的程序中,只需要将标准输入作为程序的输入,将标准输出作为程序的输出就可以了。原理分析Hadoop Streaming是Hadoop的一个工具, 它帮助用户创建和运行一类特殊的ma.原创 2020-12-09 15:41:39 · 561 阅读 · 0 评论 -
Hadoop实战&源码分析系列,持续更新
Hadoop实战MAC单机hadoop环境搭建&Wordcount实现mr实现join的功能–Map端Joinmr实现join的功能–Reduce端Join源码分析Hadoop源码分析之文件拆分Hive基础Hive实战-建表相关操作一文讲懂Hive窗口函数UDFHive深入浅出UDFHive深入浅出UDAFHive深入浅出UDTFHive深入浅出Transform-Scripts执行计划Hive执行计划分析之group by执行计划分析调优...原创 2020-12-08 18:27:25 · 213 阅读 · 0 评论 -
Hive深入浅出Transform-Scripts
前面我们讲解了UDF,UDAF,UDTF的原理以及实现思路,本文我们介绍一种轻量级的自定义函数的实现方法,Hive的TRANSFORM关键字提供了在SQL中调用自写脚本的功能,适合实现Hive中没有的功能又不想写UDF的情况。使用实例脚本编写我们来看一个具体的实例,比较简单,直接读取列的值,解析出来,然后在封装返回,没有做任何业务处理,如下所示:#!/usr/bin/pythonimport sysfor line in sys.stdin: // 多列以\t分割 a, .原创 2020-12-08 18:10:52 · 618 阅读 · 0 评论 -
Hive深入浅出UDTF
前面两篇文章我们分析了UDF和UDAF的原理以及实现思路,这一节我们介绍另外一种UDF: UDTF((User-Defined Table-Generating Functions),是用来解决输入一行输出多行的需求的,本节我们来详细分析下UDTF如何实现以及如何与lateral view一起结合使用。概述UDTF(User-Defined Table-Generating Functions)是用来解决输入一行输出多行的需求。执行步骤要实现UDTF,我们需要继承org.apache.hadoo.原创 2020-12-08 17:07:50 · 2527 阅读 · 0 评论 -
Hive深入浅出UDAF
上一篇我们讲解了基本UDF的编写,这一节我们来看下UDAF[User Defined Aggregation Functions],自定义聚合函数,用来处理输入多行,输出一行的操作,类似MapReduce中Reduce操作。UDAF是需要在hive的sql语句和group by联合使用,hive的group by对于每个分组,只能返回一条记录。概述Hive是构建在Hadoop上的数据仓库,我们的sql语句最终都是要变成Mapreduce函数,只不过hive已经帮助我们写好并隐藏mapreduce ,.原创 2020-12-08 11:58:12 · 5139 阅读 · 1 评论 -
Hive深入浅出UDF
Hive是一种构建在Hadoop上的数据仓库,Hive把SQL查询转换为一系列在Hadoop集群中运行的MapReduce作业,是MapReduce更高层次的抽象,不用编写具体的MapReduce方法,带来了很多便利,但是有时候hive提供的函数功能满足不了业务需要,就需要我们自己来写UDF函数来辅助完成。UDF函数其实就是一个简单的函数,执行过程就是在Hive转换成Mapreduce程序后,执行java方法,类似于像Mapreduce执行过程中加入一个插件,方便扩展。UDF只能实现一进一出的操作,如果需.原创 2020-12-08 09:48:42 · 1578 阅读 · 1 评论 -
Hive执行计划分析之group by执行计划分析
基础数据我们使用电商网站用户行为数据进行测试,数据格式如下:-- 用户行为数据CREATE TABLE `tmp.log_user_behavior`( `user_id` string COMMENT '用户id', `item_id` string COMMENT '商品id', `category_id` string COMMENT '商品分类id', `behavior` string COMMENT '行为', `ts` date COMMENT '行为发生时间')P原创 2020-09-01 09:58:23 · 947 阅读 · 1 评论 -
mr实现join的功能--Reduce端Join
大数据处理中绕不开的是两个甚至多个表的Join操作,由于要进行Shuffle操作,所以比较耗费时间,本文介绍了传统的Reduce端Join方法,具体实现可以看我的github基础数据有两张表,分别是用户信息数据以及用户页面的日志数据,建表语句如下所示:-- 用户行为数据CREATE TABLE `tmp.log_user_behavior`( `user_id` string COMMENT '用户id', `item_id` string COMMENT '商品id', `cate.原创 2020-08-31 19:58:25 · 317 阅读 · 0 评论 -
mr实现join的功能--Map端Join
大数据处理中绕不开的是两个甚至多个表的Join操作,由于要进行Shuffle操作,所以比较耗费时间,本文介绍了针对大小表Join的优化方法Map-Join,利用Hadoop提供的DistributedCache来进行缓存小表文件,然后再Mapper中直接进行Join,从而避免了Shuffle操作,加速了Join,具体实现可以看我的github基础数据有两张表,分别是用户信息数据以及用户页面的日志数据,建表语句如下所示:-- 用户行为数据CREATE TABLE `tmp.log_user_beh.原创 2020-08-31 17:57:16 · 658 阅读 · 0 评论 -
一文讲懂Hive窗口函数
窗口函数是可以在本行内做运算,得到多行<前几行,后几行等>的结果。 通用的窗口函数可以用下面的语法来概括:Function() Over (Partition By Column1,Column2,Order By Column3 [Rows between .. and ..])Over关键字: 表示前面的函数是分析函数,不是普通的集合函数Partition By: 分组子句,表示分析函数的计算范围,进行分组Order By: 排序子句,表示分组后,组内的排序方式Rows /Ra原创 2020-07-08 18:52:14 · 380 阅读 · 0 评论 -
Hive实战-建表相关操作
内部表&外部表在Hive创建表的语法中有一个关键字是EXTERNAL,该关键字表示表的类型,在Hive中一共有两种类型的表:MANAGED_TABLE(内部表)和EXTERNAL_TABLE(外部表)。如果没有加EXTERNAL关键字,则创建表都是管理表,两种表有以下的区别:在导入数据到外部表,数据并没有移动到自己的数据仓库目录下(如果指定了location的话),也就是说外部表中的数据并不是由Hive自己来管理的,而内部表则不一样,是由数据仓库来管理的;在删除表的时候,Hive将会把属于表原创 2020-05-08 18:54:05 · 1527 阅读 · 0 评论 -
MAC单机hadoop环境搭建&Wordcount实现
单机Hadoop环境搭建下载hadoop源码,我这里下载的是2.10.0版本添加hadoop环境变量,打开~/.zshrc# hadoopexport HADOOP_HOME=/Users/lidongmeng/software/hadoop-2.10.0export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin添加完后就可以测试...原创 2020-04-13 18:58:36 · 635 阅读 · 0 评论 -
Hadoop源码分析之文件拆分
InputFormat介绍当我们编写MapReduce程序的时候,都会进行输入格式的设置,方便hadoop可以根据设置得文件格式正确的读取数据进行处理,一般设置代码如下:job.setInputFormatClass(KeyVakueTextInputFormat.class)通过上面的代码来保证输入的文件是按照我们想要的格式被读取,所有的输入格式都继承于InputFormat,这是一个抽...原创 2020-04-09 18:01:36 · 932 阅读 · 0 评论