hive 自带函数

  1. Hive 自带了一些函数,比如:max/min等,当Hive提供的内置函数无法满足你的业务处
    理需要时,此时就可以考虑使用用户自定义函数(UDF).

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

  3. UDF(User-Defined-Function)
    一进一出

  4. UDAF(User-Defined Aggregation Function)
    聚集函数,多进一出
    类似于: count / max / min
    hive> show functions;
    hive> desc function upper;
    hive> desc function extended upper;
    #字符串连接函数: concat
    select concat(‘abc’,‘def’,‘gh’);
    #带分隔符字符串连接函数: concat_ws
    select concat_ws(’,’,‘abc’,‘def’,‘gh’);
    #cast类型转换
    select cast(1.5 as int);
    #get_json_object(json 解析函数,用来处理json,必须是json格式)
    select get_json_object(’{“name”:“jack”,“age”:“20”}’,’$.name’);
    #URL解析函数
    select parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’,
    ‘HOST’);
    #explode:把map集合中每个键值对或数组中的每个元素都单独生成一行的形式

  5. UDTF(User-Defined Table-Generating Functions)
    一进多出
    如 lateral view explore()

  6. 编程步骤:

  7. 继承org.apache.hadoop.hive.ql.UDF

  8. 需要实现evaluate函数;evaluate函数支持重载;

  9. 注意事项

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

  11. UDF中常用Text/LongWritable等类型,不推荐使用java类型;
    6.2.2 UDF 开发实例
    Step 1 创建 Maven 工程

    org.apache.hive hive-exec 2.7.5 org.apache.hadoop hadoop-common 2.7.5
org.apache.maven.plugins maven-compiler-plugin 3.0 1.8 1.8 UTF-8 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 Step 2 开发 Java 类集成 UDF Step 3 项目打包,并上传到hive的lib目录下 Step 4 添加jar包 重命名我们的jar包名称 public class MyUDF extends UDF{ public Text evaluate(final Text str){ String tmp_str = str.toString(); if(str != null && !tmp_str.equals("")){ String str_ret = tmp_str.substring(0, 1).toUpperCase() + tmp_str.substring(1); return new Text(str_ret); } return new Text(""); } } cd /export/servers/apache-hive-2.7.5-bin/lib mv original-day_10_hive_udf-1.0-SNAPSHOT.jar my_upper.jar 27 28 29 1 2 3 4 5 6 7 8 9 10 11 1 2 北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090 压缩格式 工具 算法 文件扩展名 是否可切分 DEFAULT 无 DEFAULT .deflate 否 Gzip gzip DEFAULT .gz 否 bzip2 bzip2 bzip2 .bz2 是 LZO lzop LZO .lzo 否 LZ4 无 LZ4 .lz4 否 Snappy 无 Snappy .snappy 否 hive的客户端添加我们的jar包 Step 5 设置函数与我们的自定义函数关联 Step 6 使用自定义函数 7.hive的数据压缩 在实际工作当中,hive当中处理的数据,一般都需要经过压缩,前期我们在学习hadoop的时 候,已经配置过hadoop的压缩,我们这里的hive也是一样的可以使用压缩来节省我们的MR处 理的网络带宽 7.1 MR支持的压缩编码 为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器,如下表所示 add jar /export/servers/apache-hive-2.7.5-bin/lib/my_upper.jar; create temporary function my_upper as 'cn.itcast.udf.ItcastUDF'; select my_upper('abc');
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页