时间:2015-05-06 来源:

Hive通用型自定义聚合函数(UDAF)【移动开发】

在使用hive进行数据处理时符合w3c标准,经常会用到group by语法,符合w3c标准但对分组的操作,html切图hive没有mysql支持得好:

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

hive只有一个collect_set内置函数,jpg或psd转html返回去重后的元素数组,网页切图价格来实现想要的功能.
编写通用型UDAF需要两个类:解析器和计算器.解析器负责UDAF的参数检查承接网页制作,操作符的重载以及对于给定的一组参数类型来查找正确的计算器,承接网页制作建议继承AbstractGenericUDAFResolver类web切图报价, "Exactly one argument is expected."); } if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) { throw new UDFArgumentTypeException(0, "Only primitive type arguments are accepted."); } return new CollectListUDAFEvaluator(); }
计算器实现具体的计算逻辑,符合w3c标准需要继承GenericUDAFEvaluator抽象类.
计算器有4种模式网页外包接活, //从原始数据到部分聚合数据的过程(map阶段), //从部分聚合数据到部分聚合数据的过程(map端的combiner阶段), //从部分聚合数据到全部聚合的过程(reduce阶段),没有reduce,将调用merge() 和 terminate()方法. };

计算器必须实现的方法:
1、getNewAggregationBuffer():返回存储临时聚合结果的AggregationBuffer对象.
2、reset(AggregationBuffer agg):重置聚合结果对象网页外包接活,Object[] parameters):迭代处理原始数据parameters并保存到agg中.
4、terminatePartial(AggregationBuffer agg):以持久化的方式返回agg表示的部分聚合结果web前端制作,Object partial):合并由partial表示的部分聚合结果到agg中.
6、terminate(AggregationBuffer agg):返回最终结果.
 
通常还需要覆盖初始化方法ObjectInspector init(Mode m,需要注意的是web切图报价,在不同的模式下parameters的含义是不同的,web切图报价比如m为 PARTIAL1 和 COMPLETE 时符合w3c标准,parameters为原始数据;m为 PARTIAL2 和 FINAL 时,符合w3c标准parameters仅为部分聚合数据(只有一个元素).在 PARTIAL1 和 PARTIAL2 模式下网页外包接活,在FINAL和COMPLETE模式下ObjectInspector 用于terminate方法的返回值.
下面实现一个计算器web前端制作,按分组中元素的出现次数降序排序,手机前端外包并将每个元素的在分组中的出现次数也一起返回承接网页制作, num1, num2, ObjectInspector[] parameters) throws HiveException { super.init(m, Object[] parameters) throws HiveException { if(parameters == null || parameters.length != 1){ return; } Object key = parameters[0]; if (key != null) { MkListAggregationBuffer myagg = (MkListAggregationBuffer) agg; putIntoList(key, List<Object> container) { Object pCopy = ObjectInspectorUtils.copyToStandardObject(key, Object partial) throws HiveException { if(partial == null){ return; } MkListAggregationBuffer myagg = (MkListAggregationBuffer) agg; List<Object> partialResult = (List<Object>) internalMergeOI.getList(partial); for (Object ob: partialResult) { putIntoList(ob, Integer> map = Maps.newHashMap(); for (int i = 0; i< myagg.container.size() ; i++){ Text key = (Text) myagg.container.get(i); if (map.containsKey(key)) { map.put(key, 1); } } List<Map.Entry<Text, new Comparator<Map.Entry<Text, Integer> o1, Integer> o2) { if (o1.getValue() < o2.getValue()) return 1; else if (o1.getValue() == o2.getValue()) return 0; else return -1; } }); List<Object> ret = Lists.newArrayList(); for(Map.Entry<Text, collect_list(value) from test group by id;
test表中数据为:
+------+-------+
| id   | value |
+------+-------+
|    1 | a     |
|    1 | a     |
|    1 | b     |
|    2 | c     |
|    2 | d     |
|    2 | d     |
+------+-------+

运行结果为:
1    ["a", "b", "2", "1"]  






点击次数:7651
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日Android四大组件学习之Service七 【编程语言】2015年07月29日UITabBarControler解决旋转问题 【编程语言】2015年06月05日2099元起!小米电视4A正式发布:智能语音功能帅爆 ,,2017年03月23日YUV12(420)(from)toRGB24 【移动开发】2015年03月16日ubuntu开启SSH服务【架构设计】2014年11月26日日历调用代码(多种效果)flash版2014年01月29日点击变化图象不错2014年01月29日asp.net利用自定义Http处理程序实现URL伪静态之初探【编程语言】2015年07月09日掌握十二则技巧Excel操作效率大大提高2014年01月28日C++超短字符串比较 【综合】2015年01月26日如何在网站级别动态更改主题2014年01月29日PHP生成HTML静态页面实例代码2014年01月29日html学习-Javascript设置和获取cookies 【移动开发】2015年02月15日HDU1827 【综合】2015年08月30日高清视频:《公开课2》Tiny开源框架服务及CEP深入剖析【Web前端】2015年08月16日kafka分区原理图【移动开发】2015年06月11日在ASP.NET使用JavaScript显示信息提示窗口实现原理及代码2014年01月29日Freemarker遍历Java的Map 【编程语言】2015年05月20日poj1845Sumdiv(同余定理,快速幂取余) 【综合】2014年11月04日谷歌发布官方Android4.0.4更新 ,,2016年06月23日24点算法【编程语言】2015年05月15日SpringMVC拦截器-路径语法-略坑 【互联网】2014年12月11日11款适合移动设备使用CSS3分页导航条 【移动开发】2015年01月26日WPS2012帮你算所得税:年终奖发多少2014年01月28日策略模式的详情【编程语言】2014年12月25日苹果发iPhone5:更轻更薄9月21日起香港发售 ,,2016年07月24日acd-1216-BeautifulPeople(二维LIS)【综合】2014年11月04日Android随笔(一) 【移动开发】2015年05月05日用mysql_fetch_array()获取当前行数据的方法详解2014年01月29日远程控制RemotelyAnywherev8.0.605附注册码2014年01月29日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)