原文链接:

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函数的更多相关文章

  1. 自定义UDF函数应用异常

    自定义UDF函数应用异常 版权声明:本文为yunshuxueyuan原创文章.如需转载请标明出处: http://www.cnblogs.com/sxt-zkys/QQ技术交流群:299142667 ...

  2. 如何给Apache Pig自定义UDF函数?

    近日由于工作所需,需要使用到Pig来分析线上的搜索日志数据,散仙本打算使用hive来分析的,但由于种种原因,没有用成,而Pig(pig0.12-cdh)散仙一直没有接触过,所以只能临阵磨枪了,花了两天 ...

  3. 047 SparkSQL自定义UDF函数

    一:程序部分 1.需求 Double数据类型格式化,可以给定小数点位数 2.程序 package com.scala.it import org.apache.spark.{SparkConf, Sp ...

  4. 三种方法实现Hadoop(MapReduce)全局排序(1)

    我们可能会有些需求要求MapReduce的输出全局有序,这里说的有序是指Key全局有序.但是我们知道,MapReduce默认只是保证同一个分区内的Key是有序的,但是不保证全局有序.基于此,本文提供三 ...

  5. 自定义udf添加一列

    //创建得分窗口字典 var dict= new mutable.HashMap[Double, Int]() ){ dict.put(result_Score(i),i) } //自定义Udf函数 ...

  6. Spark注册UDF函数,用于DataFrame DSL or SQL

    import org.apache.spark.sql.SparkSession import org.apache.spark.sql.functions._ object Test2 { def ...

  7. 2.13 Hive中自带Function使用及自定义UDF编程

    UDF:User Definition Function 一.function #查看自带的函数 hive (db_hive)> show functions; #查看一个函数的详细用法 hiv ...

  8. Hive UDF IP解析(二):使用geoip2数据库自定义UDF

    开发中经常会碰到将IP转为地域的问题,所以以下记录Hive中自定义UDF来解析IP. 使用到的地域库位maxmind公司的geoIP2数据库,分为免费版GeoLite2-City.mmdb和收费版Ge ...

  9. Hive 自定义UDF操作步骤

    Hive 自定义UDF操作步骤 需要自定义类,然后继承UDF 然后在方法envluate()方法里面实现具体的业务逻辑,打包上传到linux(以免出错打包成RunningJar) 一.创建临时函数 ( ...

随机推荐

  1. 使用Modbus批量读取寄存器地址

    使用modbus单点读取地址是轮询可能会导致效率很低,频繁发送读取报文会导致plc响应时间拉长,批量读取可大大减少数据通信的过程,每次读取完成后,在内存中异步处理返回来的数据数组. modbus 功能 ...

  2. java的bio和nio写入及读取txt文件

    一.bio的写入及读取 1.采用bio之BufferedWriter 写入文件 public static void main(String[] args) throws IOException { ...

  3. Jenkins获取jar包的快照号

    目录 一.简介 二.脚本 一.简介 主要用于打jar包的工程,显示快照包的名字.当jar打包完成后,会在target目录中,截取快照名. 二.脚本 1.脚本return-version.sh #!/b ...

  4. linux小应用 —— 日志过滤

    先说问题,统计一个日志文件中去重之后的ip地址的个数.其实这是一个非常常见也比较简单的问题,其中我个人认为最主要的应该是匹配ip地址是这个问题的核心.剩下的就是对linux命令的熟练程度的问题了.首先 ...

  5. 带你尝鲜LiteOS 组件EasyFlash

    摘要:EasyFlash是一个开源的轻量级嵌入式闪存库. 本文分享自华为云社区<LiteOS组件尝鲜-玩转EasyFlash>,作者:Lionlace . 基本介绍 EasyFlash是一 ...

  6. 选择…Select…(Power Query 之 M 语言)

    选择行: 筛选Table.SelectRows-文本与数值 筛选Table.SelectRows-日期与时间 保留错误行:= Table.SelectRowsWithErrors( 表, {" ...

  7. SP8374 PARKET1 - PARKET 题解

    Content 有一个 \(l\times w\) 大小的网格,其四周均被染成了红色,其余部分是棕色,已知红色网格与棕色网格的数量,求 \(l\) 与 \(w\) 的值. Solution 接下来给各 ...

  8. CF652B z-sort 题解

    Content 定义一个数组是 \(\text{Z}\) 排序过的,当且仅当: 对于所有的 \(i=2k+1(k\in\mathbb Z)\),\(a_i\leqslant a_{i-1}\). 对于 ...

  9. 年度最受欢迎的开源CHROME插件

    又到了年底,时间过得飞快,每到年底就有各种各样的总结各种各样的奖项出来.前几天谷歌就公布了2021年年度最受欢迎Chrome插件名单,名单共有13个. 让很多网友费解的是,其中有很多并不是今年刚出现的 ...

  10. 四、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-会话好友列表的实现

    会话好友列表的实现 1.项目引言 2.腾讯云后台配置TXIM 3.配置项目并实现IM登录 4.会话好友列表的实现 5.聊天输入框的实现 6.聊天界面容器的实现 7.聊天消息项的实现 8.聊天输入框扩展 ...