定义Nvl函数_duzewen的博客-程序员宅基地

import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
 import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
 import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDFUtils;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 /**
  * 自定义null值处理函数
  */
 public class Nvl extends GenericUDF {
  private GenericUDFUtils.ReturnObjectInspectorResolver returnOIResolver;
  private ObjectInspector[] argumentOIs;
  public ObjectInspector initialize(ObjectInspector[] arguments)
    throws UDFArgumentException {
   argumentOIs = arguments;
   //检查参数个数
   if (arguments.length != 2) {
    throw new UDFArgumentLengthException(
      "The operator 'NVL' accepts 2 arguments.");
   }
   returnOIResolver = new GenericUDFUtils.ReturnObjectInspectorResolver(true);
   //检查参数类型
   if (!(returnOIResolver.update(arguments[0]) && returnOIResolver
     .update(arguments[1]))) {
    throw new UDFArgumentTypeException(2,
      "The 1st and 2nd args of function NLV should have the same type, "
        + "but they are different: \"" + arguments[0].getTypeName()
        + "\" and \"" + arguments[1].getTypeName() + "\"");
   }
   return returnOIResolver.get();
  }
  public Object evaluate(DeferredObject[] arguments) throws HiveException {
   Object retVal = returnOIResolver.convertIfNecessary(arguments[0].get(), argumentOIs[0]);
   if (retVal == null) {
    retVal = returnOIResolver.convertIfNecessary(arguments[1].get(),
      argumentOIs[1]);
   }
   return retVal;
  }
  public String getDisplayString(String[] children) {
   StringBuilder sb = new StringBuilder();
   sb.append("if ");
   sb.append(children[0]);
   sb.append(" is null ");
   sb.append("returns");
   sb.append(children[1]);
   return sb.toString();
  }
 }
 2)添加jar到类路径
  ...
 3)注册函数
  $hive>CREATE TEMPORARY FUNCTION nvl AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFNvl';
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/duzewen/article/details/64919808

智能推荐

微信小程序—点击navigator中的子元素同时,防止跳转_阵雨丶的博客-程序员宅基地

前期代码:<navigator hover-class="none" url=''> <view>内容</view> <view bindtap='telChange'>拨打电话</view></navigator>telChange: function (e) { wx.makeP...

【数值预测案例】(6) LSTM、GRU 时间序列股票数据预测,附TensorFlow完整代码_立Sir的博客-程序员宅基地

大家好,今天和各位分享一下如何使用循环神经网络 LSTM 和 GRU 完成对股票数据的预测。GRU 是在 LSTM 基础上的简化,将 LSTM 内部的三个闸门简化成两个,往往 GRU 的计算效果会优于 LSTM1. 导入工具包如果没有电脑没有GPU的话就把下面那段调用GPU加速计算的代码删了import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layersimport matplot

4位数码管,带小数显示方法_aip650_Over-Lord的博客-程序员宅基地

说明4位数码管,带小数点,最大显示整数位9999;最多显示3位小数,例:0.123。#define HAL_DIGITAL_TUBE_MUTIPLE (1000) //可以改为10的整数倍倍数, 放大倍数, 要显示1.234,请输入1234#define HAL_DIGITAL_TUBE_DISPLAY_HZ (5) //自动刷新频率,可以关闭代码#ifdef PRINT_HEADER#undef PRINT_HEADER#endif#define PRINT_HEADER "D

R与SAS、SPSS的比较_weixin_34174132的博客-程序员宅基地

http://blog.sina.com.cn/s/blog_597fcb450100c3um.html 【转】R与SAS、SPSS的比较  (2009-03-05 20:29:40)转载标签: 教育分类: 学习R与SAS、SPSS的比较R语言R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。 R 是统计领域广泛...

编写高性能 Web 应用程序的10个技巧 (转)_dhz43885的博客-程序员宅基地

本文来自:http://www.vckbase.com/document/viewdoc/?id=1359本文使用下列技术:ASP.NET,.NET 框架,IIS  用 ASP.NET 编写 Web 应用程序其轻松程度令人难以置信。它是如此的容易,以至于许多开发人员不用花费多少时间来构筑其应用便能获得非常好的性能。在本文中,我将给出10个编写高性能 Web 应用的技巧。我的评论不仅仅...

Laravel引入第三方库的方法_lxw1844912514的博客-程序员宅基地

https://blog.csdn.net/will5451/article/details/524726951、首先在app目录下创建一个新的文件夹,命名libs(可自定义)2、(可选)考虑到后面可能会引用很多库,so,在libs下再创建一个phpQuery文件夹3、找到根目录下的composer.json文件4、找到composer.json中定义的(看我备注)...

随便推点

centos7下php-fpm多实例运行开机自启动配置_小卒过河0104的博客-程序员宅基地

在centos7中,/etc/rc.d/rc.local文件的权限被降低了,没有执行权限,需要给它添加可执行权限。chmod +x /etc/rc.d/rc.local然后就可以在里面添加你要开机自启的命令了vi /etc/rc.d/rc.local承接上篇文单的配置文件 www.conf,www1.conf,www2.conf添加php-fpm执行命令如下:/usr/sbin...

文献学习(part17)--Correlation Adaptive Subspace Segmentation by Trace Lasso_GoatGui的博客-程序员宅基地

学习笔记,仅供参考,有错必纠文章目录Correlation Adaptive Subspace Segmentation by Trace Lasso摘要介绍相关工作贡献Trace Lasso相关自适应子空间分割有噪声数据的CASS有噪声数据的CASS分组效应最优化伪代码Correlation Adaptive Subspace Segmentation by Trace Lasso摘要研究了子空间分割问题。给定从子空间的并集提取的一组数据点,目标是将它们划分到它们所提取的底层子空间中。以光

java--swing组件_我是马克思小清新的博客-程序员宅基地

swing常见的组件窗体(JFrame)面板(Jpanel) 按钮(JButton) 文本框(JTextFiled)密码框(JPasswordField)标签(JLable) 复选框(JCheckBox)单选框(JRadioButton) 下拉框(JComboBox) 列表(JList)滚动窗格(JScrollpane)   ...

大数据Linux命令之文件查看大小、系统情况命令、压缩与解压_仙人掌仙人的博客-程序员宅基地

一、实时查看文件内容Linux 中有一个tail命令,常用来显示一个文件的最后n行文档内容但更多情况下,我们要在服务器端运行程序,并且需要实时监控运行日志,这时候有什么办法实时滚动显示log文件内容?这里可以利用tail命令加参数f实现:tail用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。tail -f xxx.log (会把文件里最尾部的内容显示在屏...

树莓派4b安装docker报错解决_illegal option --version_BoJack_Horse的博客-程序员宅基地

树莓派安装docker参考:  方法1:官方文档(脚本直接安装)  方法2:官方版本中译(嫌上一个麻烦的可以直接看这个)  方法3:非脚本安装方法  方法4:2&3自己树莓派操作系统命令:lsb_release -a结果:No LSB modules are available.Distributor ID: RaspbianDescription: Raspbian GNU/Linux 10 (buster)Release: 10Codename: buste

关于安装pyside2时ERROR: Could not install packages due to an OSError: [Errno 13] 的解决办法……_pyside2安装失败_爱媛YY的博客-程序员宅基地

今天在Windows11系统下的pycharm开发环境中使用终端安装pyside2包时报了错误:根据错误信息来看是操作系统错误导致的权限不足被拒绝,红色信息最后告诉我可以考虑添加--user 或者检查权限来尝试解决。我首先上网查找了一下这个错误,网上的大佬们基本上靠着 --user 即可解决,但我尝试之后依然不可: 既然简单的不行,没办法,只好继续看信息,既然错误信息已经提示我是C:\\Users\\Administrator\\AppDat...

推荐文章

热门文章

相关标签