首页 > 其他分享 >大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战

时间:2023-05-17 21:00:51浏览次数:47  
标签:partial String Hive return UDAF UDF result new public


 大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战

select sum_all(age) from ...


 hive> use default;
 show tables;
 select * from employeeforhaving;






一:udf 编码

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


 public final class LowerCase extends UDF {
   public Text evaluate(final Text s) {
     if (s == null) { return null; }
     return new Text(s.toString().toLowerCase());
   }
 }





二:导出jar包  hadoopapps.jar


三,加载jar包
hive> add jar /root/..../hadoopapps.jar


四,hive> CREATE TEMPORARY FUNCTION tolower AS com.dt.spark.hive.HIVEUDF 


五,使用


hive> SELECT tolower(name) from employeeforhaving;






一:UDAF 聚合 编码

import org.apache.hadoop.hive.ql.exec.UDAF;
 import org.apache.hadoop.hive.ql.exec.UDAFEvaluator;


 public class concat extends UDAF {
  public static class ConcatUDAFEvaluator implements UDAFEvaluator{
   public static class PartialResult{
    String result;
    String delimiter;
   }


   private PartialResult partial;
   
   public void init() {
    partial = null;
   }
   
   public boolean iterate(String value,String deli){
    
    if (value == null){
     return true;
    }
    if (partial == null){
     partial = new PartialResult();
     partial.result = new String("");
     if(  deli == null || deli.equals("") )
     {
      partial.delimiter = new String(",");
     }
     else
     {
      partial.delimiter = new String(deli);
     }
         
    }
    if ( partial.result.length() > 0 )
    {
     partial.result = partial.result.concat(partial.delimiter);
    }
    
    partial.result = partial.result.concat(value);
    
    return true;
   }
   
   public PartialResult terminatePartial(){
    return partial;
   }
   
   public boolean merge(PartialResult other){
    if (other == null){
     return true;
    }
    if (partial == null){
     partial = new PartialResult();
     partial.result = new String(other.result);
     partial.delimiter = new String(other.delimiter);
    }
    else
    {   
     if ( partial.result.length() > 0 )
     {
      partial.result = partial.result.concat(partial.delimiter);
     }
     partial.result = partial.result.concat(other.result);
    }
    return true;
   }
   
   public String terminate(){
    return new String(partial.result);
   }
  }
 }


二:


大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hive

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_Text_02

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hadoop_03


大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hive_04

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hive_05

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hadoop_06

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hadoop_07



大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_Text_08

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hadoop_09



 UDAF 聚合 

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hive_10

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hive_11

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_Text_12



大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hadoop_13


大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hive_14

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_Text_15

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_Text_16

大数据Spark “蘑菇云”行动第93课:Hive中的内置函数、UDF、UDAF实战_hive_17




标签:partial,String,Hive,return,UDAF,UDF,result,new,public
From: https://blog.51cto.com/u_10561036/6293784

相关文章

  • 第92课作业,通过SerDes的方式对一下数据进行Hive的存储和查询操作
     第92课作业,通过SerDes的方式对一下数据进行Hive的存储和查询操作: 0^^Hadoop^^America^^5000|8000|12000|level8^^male1^^Spark^^America^^8000|10000|15000|level9^^famale2^^Flink^^America^^7000|8000|13000|level10^^male3^^Hadoop^^America^^9000|11000|12000|level10^^f......
  • hive(一)
    数据仓库数据仓库,英文名称为DataWarehouse,可简写为DW。是一个用于存储,分析,报告的数据系统.数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持.数据库和数据仓库区别数据库和数据仓库的区别实际就是OLTP和OLAP的区别OLTP系统的典型应用就是RDBMS,也......
  • HIVE跨集群迁移
    查看mysql使用端口ps-ef|grepmysqlss-antp|grep[ps查出来的pid]停止HIVE写入服务创建备份路径mkdir-p/root/hivebackup/执行备份数据库命令:(在目标集群执行)mysqldump-uroot-pPassword-h1.1.1.1-P3306--databaseshive_prode>/root/jws/hiveba......
  • impala jdbc导出hive数据字典
    业务需求太多了,给完整导出为html文件,以及之前搞的publicstaticvoidmain(String[]args)throwsException{kerberos();}publicstaticvoidkerberos(){URLresource=Thread.currentThread().getContextClassLoader().getResource("");......
  • 1、通过亿级数据量在hive和impala中查询比较text、orc和parquet性能表现(二)
    文章目录9、分别在hive和impala中查询验证结果(比較HDFS存儲三種格式文件的查詢性能textfile、orc、parquet)1)、查詢總條數2)、隨便找一條信息,按照name查詢3)、按照多条件查询4)、按照時間區間查詢5)、兩張表join6)、總結1、文件存儲2、hive查詢與impala查詢速度3、不同查詢類型的查詢......
  • 小知识:设置archive_lag_target参数强制日志切换
    为客户测试一个ADG场景问题,发现测试环境的日志切换频率过低,总是需要定期手工切换,这非常影响测试心情。实际上,可以设置archive_lag_target参数强制日志切换。比如设置:altersystemsetarchive_lag_target=1800;这样即使库没任何压力,半小时也会切换一次日志。该设置同时也适......
  • 【大数据】Hive 小文件治理和 HDFS 数据平衡讲解
    目录一、Hive小文件概述二、Hive小文件产生的背景三、环境准备四、Hive小文件治理1)小文件合并(常用)1、示例演示一(非分区表)2、示例演示二(分区表)3、示例演示三(临时表)2)文件压缩3)存储格式优化4)分区表5)垃圾回收五、HDFS数据平衡1)HDFS数据倾斜2)HDFS数据平衡一、Hive小文件概述......
  • 消息推送平台的实时数仓?!flink消费kafka消息入到hive
    大家好,3y啊。好些天没更新了,并没有偷懒,只不过一直在安装环境,差点都想放弃了。上一次比较大的更新是做了austin的预览地址,把企业微信的应用和机器人消息各种的消息类型和功能给完善了。上一篇文章也提到了,austin常规的功能已经更新得差不多了,剩下的就是各种细节的完善。不知道大......
  • Hive3安装
    Hive3安装Mysql安装卸载Centos7自带的mariadb[root@node3~]#rpm-qa|grepmariadbmariadb-libs-5.5.64-1.el7.x86_64[root@node3~]#rpm-emariadb-libs-5.5.64-1.el7.x86_64--nodeps[root@node3~]#rpm-qa|grepmariadb[root@nod......
  • 【大数据】Hive Join 的原理与机制
    目录一、概述二、环境准备三、HiveJOIN类型四、Map,Shuffle,Reduce三阶段1)Map阶段2)Shuffle阶段3)Reduce阶段五、CommonJoin(Reduce阶段)六、MapJoin(Map阶段)一、概述Hive是一个基于Hadoop的数据仓库解决方案,它提供了类似于SQL的查询语言,称为HiveQL,用于处理结构化数据。在Hive中......