Hive与MapReduce相关排序及自定义UDF函数
原文链接:
https://www.toutiao.com/i6770870821809291788/
Hive和mapreduce相关的排序和运行的参数
1.设置每个reduce处理的数据量(单位是字节)
我们在hive中查看下

配置文件hive-site.xml.template

我们打开配置文件可以看到

这是256MB

如果超过1G,将使用4个reducers

2、设置最大运行的reduce的个数
同上我们可以在配置中找到下面的内容

复制到记事本里,简化了描述,从配置中我们可以看到默认reduce个数是1009

3.实际运行的reduce的个数
这个去哪里看呢?我们用之前执行过的reduce

访问8088端口,查看历史history

进入后在configuration中可以搜索到,可以看到我们的语句是否有reduce。
默认设置在hive中可以看到

如果我们使用下面的排序,是否reduce的数量有关系呢?
order by 全局排序
sort by:局部排序
distribute by (底层是MR分区)
cluster by:相当于distribute by + sort by组合使用
假如我们设置成3个

执行语句
select * from emp order by sal;


所以对于order by 全局排序,设置多个reduce的没有太大作用。
执行语句
Insert overwrite local directory '/data/hivetest/export_local_emp' select * from emp sort by sal desc;
查看结果,reduce是3个

生成文件

查看文件内容,可以看到每个都排序了

所以对于sort by 局部排序,设置多个reduce的是有作用的。
执行语句
insert overwrite local directory '/opt/hivetest/distribute_test' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' select * from emp distribute by deptno sort by sal ;

我们查看文件

查看文件内容,都已经排序了

所以对于distribute by 局部排序,设置多个reduce的是有作用的。有两个注意的地方
(1)可以按照指定的字段进行分区
(2)先分区后排序,一般和sort by联合使用
执行语句
insert overwrite local directory '/data/hivetest/cluster_test' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' select * from emp cluster by sal ;

查看文件

查看内容

所以对于cluster by 局部排序,设置多个reduce的是有作用的,排序只能降序排序,不能指定排序规则
自定义函数(UDF)一进一出
实现一个功能,转换大小写,
首先创建一个maven项目


添加依赖
下面是依赖的主要内容
org.apache.hadoop
hadoop-client
2.7.3
org.apache.hive
hive-exec
1.2.1
org.apache.hive
hive-jdbc
1.2.1


创建一个类

编写代码

编写一个测试方法,测试代码

将写好的代码打成jar包,上传linx

一直点击下一步,其中注意主类的选择

将jar添加到hive里面去
add jar /data/hivetest/hive_udf.jar;
将包上传

我们进入hive,使用db_deptemp库

执行命令

list jars 和 delete jar 分别是显示jar和删除jar

创建临时函数
create temporary function convert_bl as 'com.xlglvc.xxx.mapredece.hiveudf.TestHiveUDF';

可以利用show functions查看函数

我们查看已有表的数据,可以看到很多大写的名字

执行我们的函数就可以了

Hive与MapReduce相关排序及自定义UDF函数的更多相关文章
- 自定义UDF函数应用异常
自定义UDF函数应用异常 版权声明:本文为yunshuxueyuan原创文章.如需转载请标明出处: http://www.cnblogs.com/sxt-zkys/QQ技术交流群:299142667 ...
- 如何给Apache Pig自定义UDF函数?
近日由于工作所需,需要使用到Pig来分析线上的搜索日志数据,散仙本打算使用hive来分析的,但由于种种原因,没有用成,而Pig(pig0.12-cdh)散仙一直没有接触过,所以只能临阵磨枪了,花了两天 ...
- 047 SparkSQL自定义UDF函数
一:程序部分 1.需求 Double数据类型格式化,可以给定小数点位数 2.程序 package com.scala.it import org.apache.spark.{SparkConf, Sp ...
- 三种方法实现Hadoop(MapReduce)全局排序(1)
我们可能会有些需求要求MapReduce的输出全局有序,这里说的有序是指Key全局有序.但是我们知道,MapReduce默认只是保证同一个分区内的Key是有序的,但是不保证全局有序.基于此,本文提供三 ...
- 自定义udf添加一列
//创建得分窗口字典 var dict= new mutable.HashMap[Double, Int]() ){ dict.put(result_Score(i),i) } //自定义Udf函数 ...
- Spark注册UDF函数,用于DataFrame DSL or SQL
import org.apache.spark.sql.SparkSession import org.apache.spark.sql.functions._ object Test2 { def ...
- 2.13 Hive中自带Function使用及自定义UDF编程
UDF:User Definition Function 一.function #查看自带的函数 hive (db_hive)> show functions; #查看一个函数的详细用法 hiv ...
- Hive UDF IP解析(二):使用geoip2数据库自定义UDF
开发中经常会碰到将IP转为地域的问题,所以以下记录Hive中自定义UDF来解析IP. 使用到的地域库位maxmind公司的geoIP2数据库,分为免费版GeoLite2-City.mmdb和收费版Ge ...
- Hive 自定义UDF操作步骤
Hive 自定义UDF操作步骤 需要自定义类,然后继承UDF 然后在方法envluate()方法里面实现具体的业务逻辑,打包上传到linux(以免出错打包成RunningJar) 一.创建临时函数 ( ...
随机推荐
- R数据分析:变量间的非线性关系,多项式,样条回归和可加模型
之前的文章中都是给大家写的变量间线性关系的做法,包括回归和广义线性回归,变量间的非线性关系其实是很常见的,今天给大家写写如何拟合论文中常见的非线性关系.包括多项式回归Polynomial regres ...
- mysqldump备份容灾脚本
目录 一.备份脚本 环境需求 全量脚本 增量脚本 二.备份策略 三.容灾测试 准备 测试 误删除 一.备份脚本 环境需求 编辑/etc/my.cnf文件添加在[mysqld]版块下添加如下变量,添加后 ...
- Nginx配置正向代理
目录 一.简介 二.配置 三.参数 一.简介 场景: 用于内网机器访问外网,就需要正向代理,类似VPN. 原理: A机器可以访问外网,而B,C,D机器只能内网,便可以设立正向代理,将B,C,D机器的访 ...
- 测试工具_http_load
目录 一.简介 二.例子 三.参数 一.简介 http_load以并行复用的方式运行,用以测试Web服务器的吞吐量与负载.但是它不同于大多数压力测试工具,其可以以一个单一的进程运行,这样就不会把客户机 ...
- MySQL 分区表,为什么分区键必须是主键的一部分?
随着业务的不断发展,数据库中的数据会越来越多,相应地,单表的数据量也会越到越大,大到一个临界值,单表的查询性能就会下降. 这个临界值,并不能一概而论,它与硬件能力.具体业务有关. 虽然在很多 MySQ ...
- CF41C Email address 题解
Content 有一个字符串 \(s\),它满足以下要求: 只包含 ..@ 和小写字母. 不以 . 为开头或者结尾. 不以 @ 为开头或者结尾,并只能包含一个 @. 请将其进行如下操作,使得这个字符串 ...
- CF1265B Beautiful Numbers 题解
Content 给定一个 \(1\sim n\) 的排列,请求出对于 \(1\leqslant m\leqslant n\),是否存在一个区间满足这个区间是一个 \(1\sim m\) 的排列. 数据 ...
- WebRTC本地插入多个转发节点
网络延迟是一种比较常见的情况.在本地网页上,我们可以建立多个RTCPeerConnection,增加转发次数,来模拟出网络延迟的效果. 建立通话后,再往后面增加本地转发节点. 准备 页面准备,方便我们 ...
- WPF控件界面自适应
之前就听说WPF流式布局,顺滑的很.但由于专业只学习了winform,工作对界面的要求并不高一直没去玩它.目前公司一些软件都是WPF布局,加上工作内容涉及Socket通讯较多,决定用WPF做一个通讯小 ...
- 【LeetCode】387. First Unique Character in a String 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...