目录

1.需求

2.创建数据

3.创建表并导入数据

4.创建一个类

5.打包jar并导入hive中

6.将jar包添加到hive的classpath

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

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


1.需求

自定义函数,通过用户生日,计算每个人对应的星座

2.创建数据

[root@hadoop l0415]# vim littlebigdata.txt
edward capriolo,edward@media6degrees.com,2-12-1981,209.191.139.200,M,10
bob,bob@test.net,10-10-2004,10.10.10.1,M,50
sara connor,sara@key.net,4-5-1974,64.64.5.1,F,2

3.创建表并导入数据

0: jdbc:hive2://192.168.17.151:10000> create table if not exists littlebigdata
. . . . . . . . . . . . . . . . . . > (name string,
. . . . . . . . . . . . . . . . . . > emaile string,
. . . . . . . . . . . . . . . . . . > bday string,
. . . . . . . . . . . . . . . . . . > ip string,
. . . . . . . . . . . . . . . . . . > gender string,
. . . . . . . . . . . . . . . . . . > anum int)
. . . . . . . . . . . . . . . . . . > row format delimited fields
. . . . . . . . . . . . . . . . . . > terminated by ',';
No rows affected (0.583 seconds)
0: jdbc:hive2://192.168.17.151:10000> load data local inpath '/usr/word/l0415/littlebigdata.txt'
. . . . . . . . . . . . . . . . . . > into table littlebigdata;
No rows affected (0.915 seconds)

函数的输入将是一个日期,函数输出将是表示该用户星座的字符串

4.创建一个类

(在这里我用的IDEA)

package ch1;import org.apache.hadoop.hive.ql.exec.UDF;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
//自定义函数
public class UDFZodiacSign extends UDF {private SimpleDateFormat df;public UDFZodiacSign(){df = new SimpleDateFormat("MM-dd-yyyy");}public String evaluate (Date bday){return this.evaluate(bday.getMonth()+1,bday.getDate());}public String evaluate (String bday){Date date = null;try {date = df.parse(bday);} catch (ParseException e) {return null;}return this.evaluate(date.getMonth()+1,date.getDay());}private String evaluate(Integer month, Integer day) {if (month==1){if (day < 20) {return "Capricorn";}else{return "Aquarius";}}if (month==2){if (day <19) {return "Aquarius";}else {return "Pisces";}}return null;}
}

5.打包jar并导入hive中

6.将jar包添加到hive的classpath

0: jdbc:hive2://192.168.17.151:10000> add jar /usr/word/l0415/con2.jar;
No rows affected (0.009 seconds)

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

0: jdbc:hive2://192.168.17.151:10000> create temporary function zodiac
. . . . . . . . . . . . . . . . . . > as 'ch1.UDFZodiacSign';

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

0: jdbc:hive2://192.168.17.151:10000> select name, bday, zodiac(bday)
. . . . . . . . . . . . . . . . . . > from littlebigdata;
+------------------+-------------+-----------+--+
|       name       |    bday     |    c2     |
+------------------+-------------+-----------+--+
| edward capriolo  | 2-12-1981   | Aquarius  |
| bob              | 10-10-2004  | NULL      |
| sara connor      | 4-5-1974    | NULL      |
| lisi             | 5-29-2005   | NULL      |
| wuwu             | 6-19-2000   | NULL      |
+------------------+-------------+-----------+--+
5 rows selected (0.169 seconds)

UDF:一个通过日期计算星座相关推荐

  1. js月份的计算公式_JS根据生日月份和日期计算星座的简单实现方法

    本文实例讲述了JS根据生日月份和日期计算星座的简单实现方法.分享给大家供大家参考,具体如下: 看到了别人写的一个计算星座的js,冗长的有点儿看不过去,就自己写个了. 我想,这个函数应该足够精简了:) ...

  2. html输入日期算出星座,通过日期计算星座

    分析和理解根据日期计算星座函数 本博客根据文章 原文出自CSDN 的文章,知识产权归原文作者所有! 起始月份 号数 星座 结束月份 号数 时间区间 12 22 摩羯座 1 19 12/22 - 1/1 ...

  3. c语言switch判断星座,通过日期计算星座 - osc_d41sfzmu的个人空间 - OSCHINA - 中文开源技术交流社区...

    分析和理解根据日期计算星座函数 起始月份 号数 星座 结束月份 号数 时间区间 12 22 摩羯座 1 19 12/22 - 1/19 1 20 水瓶座 2 18 1/20 - 2/18 2 19 双 ...

  4. html输入日期算出星座,java输入日期计算星座

    java输入日期计算星座 [2021-01-31 12:59:06]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/( ...

  5. php根据日期判断星座if函数,js 日期计算星座 根据生日的月份和日期,一行代码计算星座的js小函数(转)...

    本文最后更新于2019-07-01,已超过 1年没有更新,如果文章内容.图片或者下载资源失效,请留言反馈,我会及时处理,谢谢! 温馨提示:本文共2388个字,读完预计6分钟. 摘要: 根据生日的月份和 ...

  6. java 日期计算星座_Java日期时间API系列25-----Jdk8中java.time包中的新的日期时间API类,使用MonthDay计算十二星座。...

    packagecom.xkzhangsan.time.enums;import staticcom.xkzhangsan.time.constants.Constant.MONTHDAY_FORMAT ...

  7. java 根据日期算星座_Hive自定义函数实现通过日期计算星座

    虽然Hive已经提供了很多内置的函数,比如count().sum(),但是还是不能满足用户的需求,因此提供了自定义函数供用户自己开发函数来满足自己的需求. 一.自定义函数分类UDF(User-Defi ...

  8. java根据日期判断星座_根据日期计算星座

    //formatter为月和日 let dateFomatter = NSDateFormatter(); dateFomatter.setLocalizedDateFormatFromTemplat ...

  9. java如何输入日期定义星座,求一个会java fx的大神 编写一个输入日期输出星座的代码 急急急...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package test.test; import java.text.SimpleDateFormat; import java.util.Date; ...

最新文章

  1. java byte xml_Java XMLInputSource.setByteStream方法代码示例
  2. 基础排序算法(冒泡排序,选择排序,插入排序)
  3. 五十七、Servlet工程和Tomcat
  4. 普通程序员转型深度学习指南
  5. VS2005中ReportViewer 本地模式下报表呈现 入门示例
  6. linux 空硬盘,linux – dd在整个磁盘上,但不想要空的部分
  7. python成绩区间曲线图_Python重现论文图表之【包含置信区间的折线柱状图】
  8. Enable SSH Server
  9. 简单复制粘贴个linux红帽6
  10. CMMI3认证和CMMI5认证有哪些不同
  11. 第四章 爬取西刺免费代理ip 并应用到scrapy
  12. c语言程序用if循环,if语句的用法循环语句
  13. excel2007不显示文件名
  14. Python爬虫入门【6】:蜂鸟网图片爬取之一
  15. html文字段落i排版,i排版基础操作GIF版
  16. 吃了知乎月饼,成了「喷射战士」
  17. [JavaME]手机玩点对点MSN传情动漫之补充说明
  18. sklearn的分层抽样
  19. kalilinux链接蓝牙音响_Kali-Linux安驱动、使用Blueman连接蓝牙耳机
  20. java中怎么定义true或false_java 中的true、false、null有何不同

热门文章

  1. Android WebRTC实现音视频对讲
  2. 外部Activity和fragment之间的切换,传值
  3. 基站伪造、蹭网卡:无线安全之多敏感话题访杨哲
  4. 基于STM8L15x-16x-05x系列单片机的官方标准库文件创建第一个EWSTM8工程项目
  5. H5活动邀请函用这个就可以了
  6. 计算机英语名词简释(转载)
  7. 我的世界mod整合包java_[1.7.10]我的世界多MOD整合包-糖果领域
  8. 网易白帽子黑客训练营笔记(1)
  9. android高级开发面试!五年Android开发者小米、阿里面经,Android篇
  10. There is a problem with this Windows Installer package