eclipse中编写udf
①新建java项目 并添加 hive-exec-2.1.0.jar 和hadoop-common-2.7.3.jar ,保证与集群中的版本一致
②udf类要继承org.apache.hadoop.hive.ql.exec.udf类。类中要实现evaluate。
当我们在hive中使用自己定义的udf的时候,hive会调用类中的evaluate方法来实现特定的功能
③导出项目为jar文件。
注:项目的jdk与集群的jdk要一致。
详细样例: 解析xml文件
1 import org.apache.hadoop.hive.ql.exec.udf; 2 3 import java.util.list; 4 import org.dom4j.document; 5 import org.dom4j.documentexception; 6 import org.dom4j.documenthelper; 7 import org.dom4j.element; 8 9 /** 10 * 读取下xml文档,获得document对象。 11 */ 12 13 public class analysisxml extends udf { 14 15 public string evaluate(string stxml) throws documentexception { 16 /** 17 * 节点对象的操作方法 18 */ 19 // document document = reader.read(new file("test.xml")); //解析xml文件 20 string xml = stxml.tostring(); 21 document document = documenthelper.parsetext(xml); // 解析xml字符串 22 // 获取文档根节点 23 element root = document.getrootelement(); 24 // 输出根标签的名字 25 // system.out.println(root.getname()); 26 // 获取根节点下面的所有子节点(不包过子节点的子节点) 27 list<element> list = root.elements(); 28 string contest = ""; 29 // 遍历list的方法 30 for (element e : list) { 31 contest += e.getstringvalue() + "|"; // 节点值 32 } 33 return contest; 34 35 // for (element e:list){ 36 // system.out.println(e.getname()); /节点名 37 // } 38 39 } 40 41 }
注:其中引用了第三方包 dom4j-1.6.1.jar 下载地址:
2、自己定义函数调用过程:
①加入jar包(在hive命令行里面运行)
hive> add jar /root/analysisxml.jar;
②创建暂时函数 ,hive命令行关闭后,即失效。
hive> create temporary function analysis_xml as ‘analysisxml';
③调用
hive> select id, analysis_xml(contents);
注: jar包中引用第三方包,添加至 ../hive/lib 文件夹下
如对本文有疑问, 点击进行留言回复!!
HBase Filter 过滤器之FamilyFilter详解
去 HBase,Kylin on Parquet 性能表现如何?
如何找到Hive提交的SQL相对应的Yarn程序的applicationId
网友评论