hive中udtf如何使用
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章给大家介绍hive中udtf如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。场景:使用UDTF解析JSON串废话不多说了,直接上代码要想写UDTF必须继承Gener
千家信息网最后更新 2025年02月01日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"); } ArrayListfieldNames = 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安全错误
数据库的锁怎样保障安全
云上城之歌通用服务器有几个
郑州二七区多赢网络技术服务部
关于加强网络安全工作的建议
网络安全工程师 视频
玖经网络技术有限公司怎么样
工行用阿里数据库
栾川软件开发者
找不到请求的服务器
芜湖门店管理软件开发多少钱
软件开发兼职
辛集廊坊erp网络技术
崇明区智能化网络技术特点
济南网络安全类公司
国内专业做网络安全的公司
单位网络安全建设总体规划
网络安全数据清查报告
天津大学网络安全专业全国排名
上海匡致互联网科技有限公司
渠道2服务器
数据库系统概论
网络安全咨询规划资质
施工网络技术讲解视频
数字资产交易软件开发商
方舟服务器卡
数据结构数据库系统
数据库客户端创建
泰坦陨落2检索服务器失败
根据经纬度查询数据库
共筑网络安全教学视频
银川公司软件开发系统