Hive中UDF编程
2016-11-22 21:47
423 查看
开发 UDF 步骤,实现小写转大写
pom.xml 加入Hive 依赖JAR包创建类
继承UDF
方式名称: evaluate
返回值不能为null
一定要测试
代码
package om.beifeng.bigdata; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; /** * * Step 1: * 1. Implement one or more methods named "evaluate" which will be called by Hive. * 2."evaluate" should never be a void method. However it can return "null" if needed. * */ public class LowUDF extends UDF{ /** * 实现单词转换为小写字母 * * @param str * @return */ public Text evaluate(Text str){ // invalidate if(null == str){ return null ; } if(StringUtils.isBlank(str.toString())){ return null ; } // 转小写 return new Text(str.toString().toLowerCase()) ; } public static void main(String[] args) { System.out.println(new LowUDF().evaluate(new Text("HADOOOOO"))); } }
使用
上传jar包到/opt/datas下
加载JAR包到CLASSPATH下面:
add jar /opt/datas/senior-hive-1.0-SNAPSHOT.jar
创建临时函数:
使用:select ename,my_lower(ename) xx from emp;
0.13版本以后创建永久函数
dfs -put /opt/datas/senior-hive-1.0-SNAPSHOT.jar /user/beifeng/; CREATE FUNCTION my_lower2 AS 'om.beifeng.bigdata.LowUDF' USING JAR 'hdfs://hadoop-senior01.ibeifeng.com:8020/user/beifeng/senior-hive-1.0-SNAPSHOT.jar';
show functions;
例:完成去除数据字段中双引号,自定义 UDF
原始文件处理后的结果显示在控制台
具体代码
package om.beifeng.bigdata; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; public class QuotationUDF extends UDF{ /** * 实现去除文本中的双引号 * * @param str * @return */ public Text evaluate(Text str){ // invalidate if(null == str){ return null ; } if(StringUtils.isBlank(str.toString())){ return null ; } return new Text(str.toString().replaceAll("\"","")) ; } public static void main(String[] args) { try { Scanner in = new Scanner(new File("/opt/datas/Quotation.txt")); while (in.hasNextLine()) { String str = in.nextLine(); System.out.println(new QuotationUDF().evaluate(new Text(str))); } } catch (FileNotFoundException e) { e.printStackTrace(); } } }
相关文章推荐
- Hive 编程之DDL、DML、UDF、Select总结
- Hive 编程之DDL、DML、UDF、Select总结
- Hive 编程之DDL、DML、UDF、Select总结
- Hive 编程之DDL、DML、UDF、Select总结
- hive入门UDF之星座计算(根据hive编程指南)
- Hive自带Function使用及UDF编程
- Hive UDF 编程
- Hive中自带Funcion以及UDF编程
- 2、Hive UDF编程实例
- Hive 编程之DDL、DML、UDF、Select总结
- Hive 编程之DDL、DML、UDF、Select总结
- Hive 编程之DDL、DML、UDF、Select总结
- Hive 编程之DDL、DML、UDF、Select总结
- hive之UDF编程
- Hive 编程之DDL、DML、UDF、Select总结
- Hive的UDF编程
- Hive 编程之DDL、DML、UDF、Select总结
- Hive 编程之DDL、DML、UDF、Select总结
- Hive编程指南03---Hive数据表
- Hive+GenericUDF示例二