




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南汽车工程职业学院教师授课教案第13周第1-4课时累计100课时课程名称数据仓库HIVE应用授课课题Hive自定义URF函数授课专业班级大数据2101班、2102班、2103班教学目标完成认识UDF特性、应用UDF函数、UDTF函数等学习目标,能应用自定义函数解决实际问题。教学要点教学重点UDF特性、应用UDF函数教学难点应用自定义函数解决实际问题课型一体化授课教法与学法(教具)示范演示法、任务驱动教学法、分组合作教学法课后作业完成超星平台作业、看视频熟练操作教学后记(教师课后填写)1、结合项目要多练;2、鼓励学生之间要相互请教、相互帮忙,合作解决问题,有利于他们能力的增长;3、掌握思维导图对于知识体系构建的重要性。授课教师王海霞、黄史记【课前复习】常见的内置函数有哪些,各有什么用?【作业点评】展示智课堂学生作业完成情况,并做点评。【学习目标】以“学生信息系统”项目为实操载体,完成认识UDF特性、应用UDF函数等学习目标,能应用自定义函数解决实际问题。【课程导入】Hive自定义函数分为自定义UDF函数、自定义UDAF和自定义UDTF。UDF是最常用的自定义函数,它的特点是一进一出,即输入单一参数(行/列)输出也是单一参数(行/列),例如UPPER()函数、SUBSTRING()函数等。接下来我们学习自定义UDF函数的定义、特点和使用方式。【新课讲授】一、UDF的定义用户自定义函数是用户自定义的能够扩展HiveQL功能的函数。Hive把这类函数叫做:UDF(UserDefinedFunction),只需要将UDF加入到用户会话中(交互式的或者通过脚本执行的),其使用方式就与内置函数一致。标准UDF的特点是一进一出,即输入单一参数(行/列)输出也是单一参数(行/列),UDF需要继承org.apache.hadoop.hive.ql.UDF类。二、UDF的特点Hive提供了以下两种不同的接口编写UDF程序:第一种,支持基础类型的UDF接口,apache.hadoop.hive.ql.exec.UDF,处理并返回基本数据类型,int、string、boolean、double等;第二种,支持复杂类型的GenericUDF接口,apache.hadoop.hive.ql.udf.generic.GenericUDF,可处理并返回复杂数据类型,如Map、List、Array等,同时支持嵌套;三、UDF的使用方式UDF包含两种使用方式,方式一,临时函数仅当前会话中有效,退出后重新连接即无法使用;方式二,永久函数注册UDF信息到MetaStore元数据中,可永久使用。UDF使用需要将编写的UDF类编译为jar包添加到Hive中,根据需要创建临时函数或永久函数。【讲练结合】本任务实施以“学生信息系统”项目为实操载体,依次完成新建maven项目环境、编写UDF函数Java代码、部署UDF函数到Hive环境、应用UDF函数等操作,最终完成编写Java程序实现自定义函数UDF,用于比较studentdb数据库中student表中学生的多门课程成绩,得到分数最高的课程成绩,如果最高课程成绩大于90分,输出“优秀”,成绩大于60分小于90分,输出“中等”,成绩小于60分,输出“不合格”。新建maven项目环境1、新建maven项目。打开IntelliJIDEA开发工具,新建Maven项目,配置项目使用的JDK,点击“Next”按钮。图6-SEQ图6-\*ARABIC38新建maven项目在弹出的对话框中,填写“Name”项目名称和“Location”项目存放位置,填写完成后点击“Finish”按钮。图6-SEQ图6-\*ARABIC39填写项目名称2、添加项目依赖。项目中的XML文件pom.xml用于管理Maven项目依赖的配置文件,本项目需要在配置文件pom.xml中添加用于开发Hive程序的依赖。<dependencies><!--Hive依赖--><dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>2.3.4</version></dependency></dependencies>【讲练结合】编写UDF函数的Java代码新建代码包。选中并右击项目hiveFunction中的“java”目录,在弹出的菜单栏中依次选择“New→Package”,从而新建Package包。图6-SEQ图6-\*ARABIC40新建Package新建Package包操作后,会弹出“NewPackage”窗口,在文本输入框“Enternewpackagename”中设置Package名称“udf”。图6-SEQ图6-\*ARABIC41填写Package的名字创建UDF主类。选中包“udf”并单击鼠标右键,在弹出的菜单中依次选择“New→JavaClass”新建Java类。图6-SEQ图6-\*ARABIC42新建JavaClass创建Java类操作后,会弹出“CreateNewClass”窗口,在文本框“Name”中输入“HiveUDF”设置类名称。图6-SEQ图6-\*ARABIC43填写JavaClass的名字编写UDF函数代码:packageudf;importorg.apache.hadoop.hive.ql.exec.UDF;importorg.apache.hadoop.io.Text;importjava.util.*;publicclassHiveUDFextendsUDF{publicTextevaluate(Map<String,Float>cs){floatmax=0;Stringbest_subject;SetkeySet=cs.keySet();//获取键的集合Iteratorit=keySet.iterator();//迭代键的集合while(it.hasNext()){Objectkey=it.next();Floatvalue=cs.get(key);//获取每个键所对应的值if(value!=null&&value>max){max=value;}}if(max>90){best_subject="优秀";}elseif(max>=60&&max<90){best_subject="中等";}else{best_subject="不合格";}returnnewText(newText(best_subject));}}【讲练结合】部署UDF函数到Hive环境封装jar包。在IntelliJIDEA主界面,依次选择“View→ToolsWindows→Maven”打开Maven窗口。在Maven窗口中展开“Lifecycle”折叠框,双击“package”选项进行封装jar包操作。图6-SEQ图6-\*ARABIC44打开maven窗口图6-SEQ图6-\*ARABIC45封装jar包图6-SEQ图6-\*ARABIC46成功封装jar包上传jar包。根据控制台提示jar包所在的目录找到封装完成的jar包,为了便于后续区分其他jar包,这里将jar包重命名为best_subject.jar。在虚拟机中创建目录/hive_jar:[root@hive/]#mkdir/hive_jar图6-SEQ图6-\*ARABIC47新建文件夹使用secureFX工具将best_subject.jar上传到/hive_jar/目录下。图6-SEQ图6-\*ARABIC48上传jar包到/hive_jar目录添加best_subject.jar到hive中,并执行“LISTJARS;”命令,查看当前Hive中包含的jar包。hive(default)>addjar/hive_jar/best_subject.jar;图6-SEQ图6-\*ARABIC49添加jar包到hive【讲练结合】应用UDF函数创建临时函数,将临时函数命名为best_subject,指定类名。临时函数只在当前会话窗口有效,关闭窗口或在另一个窗口临时函数都不会存在,在当前窗口内时可以在任意数据库中调用该临时函数createtemporaryfunctionbest_subjectas'udf.HiveUDF';执行“SHOWFUNCTIONSLIKE'best*';”命令,查看创建的函数best_subject,若不指定子句LIKE,则会查询Hive的所有函数包括内置函数。图6-SEQ图6-\*ARABIC50创建临时函数使用函数best_subject查看学生成绩最好的科目的等级,命名如下:selectstname,best_subject(course_scores)fromstudent;UDF函数的实现效果如下:图6-SEQ图6-\*ARABIC51调用临时函数若想要创建持久函数,则需要提前将jar包上传到HDFS上,在Hive中创建持久函数的示例如下。CREATEFUNCTIONbest_subjectAS'udf.HiveUDF'USINGJAR'hdfs://best_subject.jar';删除函数的语法格式如下。DROP[T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度办公用品销售折扣及定制服务合同
- 二零二五年度燃料研发与专利许可合同
- 二零二五年度股权代持合同:包含企业资产重组的综合性协议
- 2025年度环保设施劳务分包安全责任协议
- 二零二五年度顶管施工安全教育与应急预案制定合同
- 二零二五年度合资企业股份代持与清算协议
- 二零二五年度特色餐饮服务人员劳动合同范本
- 二零二五年度地质钻孔施工环境保护协议
- 二零二五年度集体劳动合同在民营企业中的创新
- 二零二五年度企业产品售后服务宣传片委托协议
- 【独立储能】山西省独立储能政策及收益分析-中国能建
- 2024内蒙古中考数学二轮专题复习 二次函数与几何综合题 类型二 面积问题(课件)
- DL-T5796-2019水电工程边坡安全监测技术规范
- 高等数学教案第四章不定积分
- 2024年高考时事政治考试题库(134题)
- 安全生产责任制考试试卷及答案
- 挤压模具抛光培训课件
- 大学生寒假回访母校社会实践报告
- 2023年跨境电商年度总结报告
- 水磨钻成本分析
- 2023-2024学年外研版(三起)英语六年级下册期末测试卷含答案
评论
0/150
提交评论