hive中udtf如何使用
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章给大家介绍hive中udtf如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。场景:使用UDTF解析JSON串废话不多说了,直接上代码要想写UDTF必须继承Gener
千家信息网最后更新 2025年12月02日hive中udtf如何使用
这篇文章给大家介绍hive中udtf如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
场景:使用UDTF解析JSON串
废话不多说了,直接上代码
要想写UDTF必须继承GenericUDTF类,并实现initialize,process,close三个方法,initialize定义每行的列名及类型,process方法是对数据的操作,就是把一行拆成多行,注意一行有多列的话,需要是个集合,close方法可以不实现
package dw.udf;
import java.util.ArrayList;import java.util.Iterator;import org.apache.hadoop.hive.ql.exec.UDFArgumentException;import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;import org.apache.hadoop.hive.ql.metadata.HiveException;import org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;import org.apache.hadoop.hive.serde2.objectinspector.StructObjectInspector;import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;import org.json.JSONArray;import org.json.JSONObject;public class JsonParse extends GenericUDTF {//集成GenericUDTF @Override public StructObjectInspector initialize(ObjectInspector[] args) throws UDFArgumentException { if (args.length != 1) { throw new UDFArgumentLengthException("ExplodeMap takes only one argument"); } if (args[0].getCategory() != ObjectInspector.Category.PRIMITIVE) { throw new UDFArgumentException("ExplodeMap takes string as a parameter"); } ArrayList fieldNames = new ArrayList();//这里是列的 ArrayList fieldOIs = new ArrayList(); fieldNames.add("containerid"); fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector); fieldNames.add("first_step"); fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector); fieldNames.add("second_step"); fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector); fieldNames.add("third_step"); fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector); return ObjectInspectorFactory.getStandardStructObjectInspector(fieldNames, fieldOIs); } @SuppressWarnings("rawtypes") @Override public void process(Object[] args) throws HiveException { try { JSONObject obj = new JSONObject(args[0].toString()); Iterator it = obj.keys(); while (it.hasNext()) { String key = (String) it.next(); JSONArray array = obj.getJSONArray(key); if (key.indexOf("&") != -1) { key = key.substring(0, key.indexOf("&")); } String[] outstr = new String[4]; outstr[0] = key; for (int i = 0; i < array.length(); i++) { outstr[i + 1] = array.getString(i); } forward(outstr); } } catch (Exception e) { e.printStackTrace(); } } @Override public void close() throws HiveException { }} 关于hive中udtf如何使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
方法
一行
内容
更多
帮助
不错
三个
代码
兴趣
场景
小伙
小伙伴
就是
废话
数据
文章
知识
篇文章
类型
要是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
黄浦区企业软件开发哪个好
网络技术员年度计划怎么写
抖音视频服务器多少钱一台
国家网络安全股
软件开发最基础的工作
暗黑2服务器已崩
数据库查看表的授权信息的代码
互联网科技公司的前景
怎样才能压缩k3数据库
我的世界基岩版服务器管理
网络人气软件开发
浙江实用的外贸软件开发公司
郑州柏龙达网络技术服务
计算机网络技术有什么素养
服务器测试国标有哪些
易语言可以连接本机数据库吗
服务器加速技术是什么
创造与魔法合并的服务器
数据库驱动和sql
大连云创互联网络科技有限公司
公安局网络安全应急演练
网络安全与支付系统教学
数据库中提取的秒数不对
风云天下有哪些服务器
配置yum源服务器
c 数据库生成json
成都英诺森互联网科技有限公司
数据库一卡通状态都有哪些
衡阳正规软件开发哪家便宜
重庆网络安全保障