IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Debug分析Hive UDF的执行流程以及简单示例 -> 正文阅读

[大数据]Debug分析Hive UDF的执行流程以及简单示例

文章目录

前言

通常编写HQL能方便的使用Hive的UDF,但是对其原理还不太熟悉,于是debug分析了一下它是如何执行的。

原理

select concat('hello', 'world');为例,先根据functionName获得FunctionInfo
在这里插入图片描述
根据参数类型初始化UDF,在调用evaluate进行祭计算

示例

  @Test
  public void testGenericUdf() {
      String[] dataTypes = new String[]{"String", "String"};
      String[] datas = new String[]{"hello", "world"};
      Object res = HiveUtil.evaluateGenericUdf("concat", dataTypes, datas);
      System.out.println(res);
  }

结果为hellowrold,HiveUtil参考我另一篇文章HiveUDF的evaluate方法使用分析
在这里插入图片描述

在HiveUtil加入这个方法即可

public static Object evaluateGenericUdf(String udfName, String[] dataTypes, Object[] datas) {
    try {
      FunctionInfo functionInfo = FunctionRegistry.getFunctionInfo(udfName);
      GenericUDF genericUDF = functionInfo.getGenericUDF();
      ObjectInspector[] objectInspectors = HiveUtil.toObjectInspectorArray(dataTypes, datas);
      genericUDF.initialize(objectInspectors);
      DeferredObject[] deferredObjects = HiveUtil.toDeferredObjectArray(objectInspectors);
      Object res = genericUDF.evaluate(deferredObjects);
      return res;
    } catch (UDFArgumentException e) {
      e.printStackTrace();
    } catch (HiveException e) {
      e.printStackTrace();
    }
    return null;
  }
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 11:48:52  更:2021-08-16 11:51:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:07:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码