hive的内部函数

获取0-1的随机数:

​ select rand();

​ select rand(); //固定值

切割split

​ select split(rand()*100,’\\.’)[0] //获取0-100随机数的整数

四舍五入

​ select round(rand()*100,x); //x是保留几位小数,默认是取(整数.0)

截取

​ select substring(rand()*100,0,2);

​ select substr(rand()*100,0,2); //同上

正则替代

​ select regexp_replace(“a.jpg”,“jpg”,“png”);

类型转换

​ select cast(1 as double);

case when

select
case
when 1=1 then"男"
when 1=2 then"女"
else "aaa"
end;
--------写法二--------
SELECT
(CASE 3
WHEN 1  THEN"男"
when 2  then"女"
else "aaa"
end);

select if(1=1,"","")

select if(1=1,"",if(,))

字符串拼接

select(1+2+3) // 6

select (“1”+“2”+“3”); //6.0

select concat(“1”,“2”,“3”) //123

select concat_ws("|",“1”,“2”,“3”) //1|2|3

select length(“asdasdas”);

select size(array(1,2,3));

排名函数

rank() //有并列名次,并且名次空位置

dense_rank() //有并列名次,并列名次后不空位

row_number() //没有相同名次,名次不空位

自定义函数

常见的自定义函数:

udf:用户自定义函数,一个输入一个输出。常用。

udaf:用户自定义聚合函数。多个输入,一个输出

udtf:用户表生成函数。一个输入,多个输出。

udf的使用

1.需要继承UDF,重写evaluate()方法,该方法可以重载

2.(老版)继承GenricUDF,重写evaluate、getDisplayString()、initlize()

udf使用案例

1.拼接字符串 MyConcatUdf

public class MyConcatUdf extends UDF{public static void main(String[] args) {System.out.println(new MyConcatUdf().evaluate ("online"));}public String evaluate(String word) {if(word == null) {return "null";}return word+"_class";}
}

2.根据key获取value KeyToValue

sex=1&weight=123&sla=33333
sla 33333
sex 1
aaa nullpublic class KeyToValue extends UDF{public String evaluate(String a,String key) throws JSONException {}public static void main(String[] args) throws JSONException {}
}

udf的几种部署方法

一、当前session有效(退出重新进入hive失效)

1.将udf的jar包上传到服务器

2.将jar包添加到hive中

hive> add jar /xx/xx.jar

3.创建临时函数

hive>create temporary function myconcat as 'hive.MyConcatUdf'

4.测试临时函数是否可用

show functions;
desc function myconcat;select myconcat("online"); //输出online_class

5.确定无用可以销毁函数

drop function if exists myconcat;
第二种方式

1.将udf的jar包上传到服务器

//放在此目录的jar包会自动启动
//hive-site.xml的hive.aux.jars.path
//1.目前只支持file://也就是本地文件,暂不支持HDFS,也不支持文件夹。
//2.多个文件使用逗号分隔。
//3.不能换行。
<property><name>hive.aux.jars.path</name><value>$HIVE_HOME/auxlib/</value>
</property>

2.在hive的安装目录下的bin下创建一个文件:.hiverc

cd到hive目录
vi ./bin/.hiverc
add jar /xxx/xxx/xx.jar
create temporary function ktv as 'hive.KeyToValue';
//重启

3.测试

select ktv("sex=1&weight=123&sla=33333","sal");

hive------内部函数与自定义函数相关推荐

  1. hive 元数据 自定义_如何在Hive中创建自定义函数UDF及如何直接通过Impala的同步元数据重用UDF的jar文件-阿里云开发者社区...

    如何在Hive中创建自定义函数UDF及使用 如何在Impala中使用Hive的自定义函数 UDF函数开发 使用Intellij工具开发Hive的UDF函数,进行编译: 1.使用Intellij工具通过 ...

  2. Hive的基本操作-自定义函数

    自定义函数 1. Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展. 2. 当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用 ...

  3. Spark之hive的UDF自定义函数

    1.简单的 package com.llcc.sparkSql.MyTimeSortimport org.apache.spark.{SparkConf, SparkContext} import o ...

  4. hive - 自定义函数(超详细步骤,手把手的交)

    用Java开发自定义函数,步骤: 1.eclipse上新建一个工程project(db2019): 2.导jar依赖包: db2019右键 --build path --configure... -- ...

  5. Hive 内置函数及自定义函数

    1.内置函数 使用如下命令查看当前hive版本支持的所有内置函数 show functions; 部分截图: 可以使用如下命令查看某个函数的使用方法及作用,比如查看 upper函数 desc func ...

  6. hive自定义函数UDF的使用方法

    虽然Hive已经提供了很多内置的函数,比如count().sum(),但是还是不能满足用户的需求,因此提供了自定义函数供用户自己开发函数来满足自己的需求.本实例通过编写自己的UDF,实现通过一个人的出 ...

  7. java 根据日期算星座_Hive自定义函数实现通过日期计算星座

    虽然Hive已经提供了很多内置的函数,比如count().sum(),但是还是不能满足用户的需求,因此提供了自定义函数供用户自己开发函数来满足自己的需求. 一.自定义函数分类UDF(User-Defi ...

  8. Spark SQL自定义函数_第五章

    1.自定义函数分类 类似于hive当中的自定义函数, spark同样可以使用自定义函数来实现新的功能. spark中的自定义函数有如下3类 1.UDF(User-Defined-Function) 输 ...

  9. Spark SQL自定义函数

    文章目录 自定义函数分类 自定义UDF 自定义UDAF[了解] 自定义函数分类 类似于hive当中的自定义函数, spark同样可以使用自定义函数来实现新的功能. spark中的自定义函数有如下3类 ...

  10. Hive中的用户自定义函数UDF

    Hive中的自定义函数允许用户扩展HiveQL,是一个非常强大的功能.Hive中具有多种类型的用户自定义函数.show functions命令可以列举出当前Hive会话中的所加载进来的函数,包括内置的 ...

最新文章

  1. 圆通招java_圆通java程序员面试经验|面试题 - 职朋职业圈
  2. 物理学家发现粒子是如何自我组装的
  3. Java6程序设计基础教程_【Java】《Java程序设计基础教程》第三章学习
  4. nginx子域名 linux,配置nginx服务器 —— Nginx添加多个二级子域名
  5. 【阿里云课程】生成模型之GAN优化目标设计与改进
  6. href 一个正则表达式的解析 ? 号解析
  7. oci连接mysql_OCILIB 连接Oracle数据库——插入数据
  8. mybatis 映射成多个list_SSM:Mybatis架构与原理
  9. SSM错误:Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletReque
  10. nuxt服务端php,nuxt服务端部署上线
  11. 迁移pg_塑料包装袋中添加剂迁移到食品和药品中危害健康
  12. Android开发学习之以CameraAPI方式实现相机功能(二)——相机功能配置
  13. [Hive]Hive的分析函数
  14. IDEA里面添加lombok插件,编写简略风格Java代码(转)
  15. 通过chrome的拓展程序访问其他网页
  16. 基于FPGA的GV7600驱动控制器设计,按照BT1120协议传输YCbCr数据
  17. 怎么查计算机的ip,教你如何查询电脑ip地址的方法
  18. php 一次性动态口令,一次性口令 (OTP) 动态口令身份认证
  19. Apache Storm 官方文档 —— Trident API 概述
  20. 语音识别公司排名YQ5969智能语音识别模块的快速崛起

热门文章

  1. C语言 计算平均成绩
  2. BI数据分析师工作说明
  3. 你今天因为 YYYY-MM-dd 被提 BUG 了吗?
  4. 从大数据舆情传播角度看《三生三世十里桃花》
  5. Echarts 贵州地图(增加贵安新区)
  6. python日历节日表_python日历模块_Python日历模块| calendar()方法与示例
  7. 经典物理建模钢琴-4Front TruePianos v1.9.8 WiN-MAC
  8. 元素定位163邮箱账号密码输入框问题,iframe嵌套
  9. 关于鸿蒙系统 JS UI 框架源码的分析
  10. 辉芒微FT61F022A