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) 一.创建临时函数 ( ...
随机推荐
- 记一次 .NET 某妇产医院 WPF内存溢出分析
一:背景 1. 讲故事 上个月有位朋友通过博客园的短消息找到我,说他的程序存在内存溢出情况,寻求如何解决. 要解决还得通过 windbg 分析啦. 二:Windbg 分析 1. 为什么会内存溢出 大家 ...
- QPS和TPS的区别于理解
TPS: (每秒事务处理量(TransactionPerSecond)) 一个表达系统处理能力的性能指标,每秒处理的消息数(Transaction Per Second),每秒事务处理量 - 性能测试 ...
- Mysql配置文件 binlog和慢日志
目录 binlog binlog_format log_slave_updates log-bin|log-bin-index expire_logs_days relay-log|relay-log ...
- pipeline配置java项目
pipeline { agent { label 'slave' } options { timestamps() disableConcurrentBuilds() buildDiscarder( ...
- 如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目
目录 前言 项目目录 搭建项目 1. docker安装启动mysql以及redis 1.1 安装mysql 1.2 安装redis 2. 初始化数据库 3.创建项目 4.初始化代码 4.1 全局配置文 ...
- IDEA中安装SVN
下载svn和汉化安装包: (下面安装过程中,运行这两个安装包需要管理员权限:使用管理员权限运行cmd,在cmd中运行这两个安装包) 1.安装SVN 安装SVN时这里要选择[will be i ...
- 测试开发实战[提测平台]17-Flask&Vue文件上传实现
微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 先回顾下在此系列第8次分享给出的预期实现的产品原型和需求说明,如下图整体上和前两节实现很相似,只不过一般测试报告要写的内容可能比较多,就多 ...
- 最新超详细VMware下CentOS系统安装
一.了解CentOS系统 CentOS是免费的.开源的.可以重新分发的开源操作系统,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统 ...
- uniapp框架如何实现仿微信相册:图视频过滤、相册选择功能
今天我们分享基于uniapp + vue实现仿微信相册插件实例,该插件完全还原了微信相册的功能 1: 相册选择 2: 图片,视频类型过滤 3: 自定义相册界面UI 技术实现 开发环境:Hbuilder ...
- JAVA获取访问者IP地址
pom <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomc ...