zoukankan      html  css  js  c++  java
  • Hive-函数

    7 函数

    7.1 系统内置函数

    1.查看系统自带的函数

    hive> show functions;

    2.显示自带的函数的用法

    hive> desc function upper;

    3.详细显示自带的函数的用法

    hive> desc function extended upper;

    0: jdbc:hive2://node01:10000> desc function upper;
    +--------------------------------------------------------------------+--+
    |                              tab_name                              |
    +--------------------------------------------------------------------+--+
    | upper(str) - Returns str with all characters changed to uppercase  |
    +--------------------------------------------------------------------+--+
    1 row selected (0.028 seconds)
    0: jdbc:hive2://node01:10000> desc function extended upper;
    +--------------------------------------------------------------------+--+
    |                              tab_name                              |
    +--------------------------------------------------------------------+--+
    | upper(str) - Returns str with all characters changed to uppercase  |
    | Synonyms: ucase                                                    |
    | Example:                                                           |
    |   > SELECT upper('Facebook') FROM src LIMIT 1;                     |
    |   'FACEBOOK'                                                       |
    +--------------------------------------------------------------------+--+
    5 rows selected (0.03 seconds)

     

    7.2 自定义函数

    1Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。

    2Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDFuser-defined function)。

    3)根据用户自定义函数类别分为以下三种:

    1UDFUser-Defined-Function

    一进一出

    2UDAFUser-Defined Aggregation Function

    聚集函数,多进一出

    类似于:count/max/min

    3UDTFUser-Defined Table-Generating Functions

    一进多出

    lateral view explore()

    4)官方文档地址

    https://cwiki.apache.org/confluence/display/Hive/HivePlugins

    5)编程步骤:

    1)继承org.apache.hadoop.hive.ql.UDF

    2)需要实现evaluate函数;evaluate函数支持重载;

    3)在hive的命令行窗口创建函数

    a)添加jar

    add jar linux_jar_path

    b)创建function

    create [temporary] function [dbname.]function_name AS class_name;

    4)在hive的命令行窗口删除函数

    Drop [temporary] function [if exists] [dbname.]function_name;

     

     

    6)注意事项

    1UDF必须要有返回类型,可以返回null,但是返回类型不能为void

    7.3 自定义UDF函数

    1.创建一个Maven工程Hive

    2.导入依赖

    <dependencies>

    <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec -->

    <dependency>

    <groupId>org.apache.hive</groupId>

    <artifactId>hive-exec</artifactId>

    <version>1.2.1</version>

    </dependency>

    </dependencies>

    3.创建一个类

    package com.atguigu.hive;

    import org.apache.hadoop.hive.ql.exec.UDF;

     

    public class Lower extends UDF {

     

    public String evaluate (final String s) {

     

    if (s == null) {

    return null;

    }

     

    return s.toLowerCase();

    }

    }

    4.打成jar包上传到服务器/opt/module/jars/udf.jar

    5.将jar包添加到hive的classpath

    hive (default)> add jar /opt/module/datas/udf.jar;

    6.创建临时函数与开发好的java class关联

    hive (default)> create temporary function mylower as "com.atguigu.hive.Lower";

    7.即可在hql中使用自定义的函数strip 

    hive (default)> select ename, mylower(ename) lowername from emp;

  • 相关阅读:
    JetBrains全系列破解
    BZOJ 4817: [Sdoi2017]树点涂色 LCT + DFS序 + 线段树
    LOJ #6041. 「雅礼集训 2017 Day7」事情的相似度 LCT + SAM + 线段树
    Uoj 52. 【UR #4】元旦激光炮 交互题
    Uoj #218. 【UNR #1】火车管理 可持久化线段树+思维
    luoguP3979 遥远的国度 LCT + multiset维护子树信息
    BZOJ 4999: This Problem Is Too Simple! DFS序 + LCA + 树状数组 + 离线
    BZOJ 1787: [Ahoi2008]Meet 紧急集合
    BZOJ 2959: 长跑 LCT + 并查集 + 点双
    BZOJ 4259: 残缺的字符串 FFT
  • 原文地址:https://www.cnblogs.com/LXL616/p/10964451.html
Copyright © 2011-2022 走看看