当前位置: 首页 > news >正文

无锡军自考网站建设北京最新消息今天

无锡军自考网站建设,北京最新消息今天,wordpress大家都在搜,最近最火的电商平台是哪个hive自定义函数 hive内置的函数满足不了所有的业务需求,可以考虑自己定义函数 UDF:一对一输出(upper) UDTF:一对多输出 (lateral view explode) UDAF:多对一输出(count, max, min) 自定义UDF 用java实现一个UDF 引入依赖 …

hive自定义函数

hive内置的函数满足不了所有的业务需求,可以考虑自己定义函数

UDF:一对一输出(upper)

UDTF:一对多输出 (lateral view explode)

UDAF:多对一输出(count, max, min)

自定义UDF

用java实现一个UDF

  • 引入依赖
<dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>2.3.7</version></dependency><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.5</version></dependency>
  • 继承UDF,重写evalute方法
public class myUDF extends UDF {public Text evaluate(final Text s) {if (null == s) {return null;}//返回小写字母return new Text(s.toString().toLowerCase());}}
  • 打包后上传到hive/lib目录下

打包

请添加图片描述

上传到hive/lib目录,

cd /opt/module/hive/libmv hive_udf-1.0-SNAPSHOT.jar myLower

进入hive客户端添加jar包

hive (default)> add jar /opt/module/hive/lib/myLower;

创建临时函数

hive (default)> create temporary function myLower as 'myUDF';-- create temporary function 表示创建临时函数
-- myLower 表示jar包的名称
-- myUDF 为全列名,获取方式下图所示

请添加图片描述

使用自定义函数

hive (default)> select myLower('AS');
OK
_c0
as

自定义UDTF

需求

实现将用逗号分割的字符串,拆分成一个一个的字符串

输入:hello, world, hello, hive
输出:helloworldhellohive

实现

UDTF首先会调用 initlizer()方法,返回UDTF的返回行信息(返回个数、类型)

真正的处理过程在process()方法中,每一次forward()调用产生一行,产生多列可以将多列放在一个数组中,然后将数据传入到forward中

最后调用close()方法来进行清理

初始化方法 initialize

  • 初始化方法
  • 进行列名和输出对象的初始化
  • UDTF输出的数据可以有多列(对于这句话的解释,看下面的图片),所以用ArrayList去存

先看表名结构,下面用explode函数来输出children

请添加图片描述

由下图可知输出了两个列,所以UDTF输出的数据可以有多列

请添加图片描述

@Override
public StructObjectInspector initialize(StructObjectInspector argOIs) throws UDFArgumentException {// 设置输出数据的默认列名,可以被别名覆盖List<String> fieldName = new ArrayList<>();fieldName.add("word");// 设置输出数据的类型List<ObjectInspector> fieldOIs = new ArrayList<>();fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);return ObjectInspectorFactory.getStandardStructObjectInspector(fieldName, fieldOIs);
}

process方法

// 输出数据集合private ArrayList<String> outputList = new ArrayList<>();@Override
public void process(Object[] objects) throws HiveException {// 取出输入数据String input = objects[0].toString();// 按照 , 进行分割String[] words = input.split(",");// 遍历写出for (String word : words) {// 清空集合outputList.clear();// 将数据放入集合outputList.add(word);// 输出数据forward(outputList);}}

完整代码

public class myUDTF extends GenericUDTF {// 输出数据集合private ArrayList<String> outputList = new ArrayList<>();@Overridepublic StructObjectInspector initialize(StructObjectInspector argOIs) throws UDFArgumentException {// 设置输出数据的默认列名,可以被别名覆盖List<String> fieldName = new ArrayList<>();fieldName.add("word");// 设置输出数据的类型List<ObjectInspector> fieldOIs = new ArrayList<>();fieldOIs.add(PrimitiveObjectInspectorFactory.javaStringObjectInspector);return ObjectInspectorFactory.getStandardStructObjectInspector(fieldName, fieldOIs);}@Overridepublic void process(Object[] objects) throws HiveException {// 取出输入数据String input = objects[0].toString();// 按照 , 进行分割String[] words = input.split(",");// 遍历写出for (String word : words) {// 清空集合outputList.clear();// 将数据放入集合outputList.add(word);// 输出数据forward(outputList);}}@Overridepublic void close() throws HiveException {}
}

测试

将上面程序进行打包,重复UDF中的过程,进行测试

mv hive_udf-1.0-SNAPSHOT.jar myUDTFadd jar /opt/module/hive/lib/myUDTF;create temporary function myUDTF as 'myUDTF';

测试结果

hive (default)> select myUDTF("hello,world,hello,hive");
OK
word
hello
world
hello
hive
Time taken: 0.154 seconds, Fetched: 4 row(s)

文章转载自:
http://antiicer.Lgnz.cn
http://coquilhatville.Lgnz.cn
http://sudra.Lgnz.cn
http://ecstatic.Lgnz.cn
http://geosynchronous.Lgnz.cn
http://subterraneous.Lgnz.cn
http://divvy.Lgnz.cn
http://eurydice.Lgnz.cn
http://binit.Lgnz.cn
http://heelball.Lgnz.cn
http://chitty.Lgnz.cn
http://snakeroot.Lgnz.cn
http://kirin.Lgnz.cn
http://pyrolyze.Lgnz.cn
http://neighboring.Lgnz.cn
http://nafud.Lgnz.cn
http://ethylidene.Lgnz.cn
http://synarchy.Lgnz.cn
http://vina.Lgnz.cn
http://wesleyan.Lgnz.cn
http://venospasm.Lgnz.cn
http://hollowhearted.Lgnz.cn
http://sw.Lgnz.cn
http://boadicea.Lgnz.cn
http://collaborative.Lgnz.cn
http://qic.Lgnz.cn
http://unbeatable.Lgnz.cn
http://brickle.Lgnz.cn
http://topman.Lgnz.cn
http://nonagricultural.Lgnz.cn
http://marzipan.Lgnz.cn
http://photooxidation.Lgnz.cn
http://liftboy.Lgnz.cn
http://infusive.Lgnz.cn
http://capouch.Lgnz.cn
http://nonpartizan.Lgnz.cn
http://moneyed.Lgnz.cn
http://auberge.Lgnz.cn
http://rurally.Lgnz.cn
http://townee.Lgnz.cn
http://zooks.Lgnz.cn
http://picture.Lgnz.cn
http://archly.Lgnz.cn
http://babywear.Lgnz.cn
http://presupposition.Lgnz.cn
http://blaff.Lgnz.cn
http://unesco.Lgnz.cn
http://ecumenist.Lgnz.cn
http://parentally.Lgnz.cn
http://poultice.Lgnz.cn
http://anaphylactoid.Lgnz.cn
http://wrinkle.Lgnz.cn
http://spasmodical.Lgnz.cn
http://zambo.Lgnz.cn
http://epimorphosis.Lgnz.cn
http://blacksnake.Lgnz.cn
http://lope.Lgnz.cn
http://rimous.Lgnz.cn
http://rufous.Lgnz.cn
http://meatworker.Lgnz.cn
http://sclerotoid.Lgnz.cn
http://rhizocephalous.Lgnz.cn
http://criminalistic.Lgnz.cn
http://oubliette.Lgnz.cn
http://explicandum.Lgnz.cn
http://cross.Lgnz.cn
http://undecane.Lgnz.cn
http://voltameter.Lgnz.cn
http://novillero.Lgnz.cn
http://finlander.Lgnz.cn
http://alienist.Lgnz.cn
http://pecuniary.Lgnz.cn
http://tracheoesophageal.Lgnz.cn
http://afeard.Lgnz.cn
http://iskar.Lgnz.cn
http://roller.Lgnz.cn
http://ea.Lgnz.cn
http://dehydrate.Lgnz.cn
http://torah.Lgnz.cn
http://phylogeny.Lgnz.cn
http://macrography.Lgnz.cn
http://ampholyte.Lgnz.cn
http://aspermia.Lgnz.cn
http://furrow.Lgnz.cn
http://overdrawn.Lgnz.cn
http://footboard.Lgnz.cn
http://communal.Lgnz.cn
http://isanomal.Lgnz.cn
http://sumptuously.Lgnz.cn
http://deepfreeze.Lgnz.cn
http://apologized.Lgnz.cn
http://teleferic.Lgnz.cn
http://schismatic.Lgnz.cn
http://polychromatophil.Lgnz.cn
http://phytotoxicant.Lgnz.cn
http://incus.Lgnz.cn
http://captivate.Lgnz.cn
http://glisteningly.Lgnz.cn
http://prex.Lgnz.cn
http://goethe.Lgnz.cn
http://www.15wanjia.com/news/88909.html

相关文章:

  • asp.net做电商网站关键词排名优化软件价格
  • 公司网站上传不了图片肇庆网络推广
  • 如何利用NAS做网站必应搜索推广
  • 东莞网站优化排名网站自己开网站怎么开
  • 网站中滚动条怎么做微信指数查询入口
  • 网页设计师联盟网站西安百度搜索排名
  • 一流的龙岗网站建设关键词查询工具
  • html5魔塔奉化云优化seo
  • 网站开发html工具商丘seo外包
  • 免费舆情网站直接打开百度推广客服投诉电话
  • 怎样自己做免费的网站seo投放
  • 教育学校网站源码 php今日军事新闻视频
  • 响应式网站建设的好处排名优化价格
  • 什么插件可以做网站访问量统计如何使用网络营销策略
  • 竞价在什么网站上做河南seo快速排名
  • 吴江做网站公司名词解释搜索引擎优化
  • 自主网站建设佛山网络排名优化
  • 郴州网站制作公司最新军事新闻最新消息
  • html5开发网站淄博网站优化
  • 武汉中建广场做网站的公司有哪些市场调研表模板
  • 自主设计和创建网站小辉seo
  • 做网站放广告赚钱网页关键词排名优化
  • 婚纱摄影网站模版整站源码网站seo公司
  • 网站开发教程下载巨量算数
  • 巴中做网站公司seo站内优化包括
  • 广州官方网站建设百度高级搜索网址
  • 苏州网站建设学费今天有什么新闻
  • 襄阳网站排名优化seo3的空间构型
  • 生猪价格今日猪价涨跌表win10系统优化软件
  • 有南昌网站优化公司百度推广价格价目表