Hive实现返回MAP的UDF

如果只是返回String,那么直接继承UDF即可,如果想要返回MAP/LIST/STRUCT,则需要继承GenericUDF; 如下代码示例,将URL中的参数进行了解析成了一个MAP返回:

  转载请注明来自:疯狂的蚂蚁www.crazyant.net

Hive取非Group by字段数据的方法

遇到这么一个需求,输入数据为一个ID对应多个name,要求输出数据为ID是唯一的,name随便取一个就可以。 执行以下hive ql语句:

会报错:

查了一下,HIVE有这么一个函数collect_set,类似于mysql的group_concat函数,把每个分组的其 … 继续阅读Hive取非Group by字段数据的方法

Hive的left join、left outer join和left semi join三者的区别

Hive的Join的文档说明地址: https://cwiki.apache.org/confluence/display/Hive/LanguageManual%2BJoins 以下为两个测试数据表建表语句:

测试数据为: hive left join测试数据 测试1:left join 语句: select * from tab … 继续阅读Hive的left join、left outer join和left semi join三者的区别

Hive中Order by和Sort by的区别是什么?

Hive基于HADOOP来执行分布式程序的,和普通单机程序不同的一个特点就是最终的数据会产生多个子文件,每个reducer节点都会处理partition给自己的那份数据产生结果文件,这导致了在HADOOP环境下很难对数据进行全局排序,如果在HADOOP上进行order by全排序,会导致所有的数据集中在一台reducer节点上,然后进行排序,这样很可能会超过单个节点的磁盘和内存存储能力导致任务失败 … 继续阅读Hive中Order by和Sort by的区别是什么?

向Hive程序传递变量的三种方法

图 1 外部向Hive程序中传递变量的方法 使用Hive编写程序最常用的方法是将Hive语句写到文件中,然后使用hive -f filename.hql来批量执行查询语句。经常需要将外部参数传入到hql语句中替换其中的变量来动态执行任务,比如动态设定数据库名、表名、时间值、字段序列等变量,以达到脚本泛化执行的目的。 1) 方法1:字符串、正则、模板引擎等暴力方式替换 最简单也最暴力的方式,是在hq … 继续阅读向Hive程序传递变量的三种方法

把HIVE程序优化30倍的经验

今天遇到一个HIVE需求,输入只有4列,大概160MB,需要引用一些字典文件,然后输出70列数据; 典型的复杂计算,由于HIVE无法单独实现,采用TRANSFORM写了PYTHON脚本实现;   刚开始写完,map.tasks被设置为7个,结果运行了40分钟还没结束; 以下是一些改进的过程: 1、修改mapred.map.tasks无法实现修改map.tasks数目的目的,迂回的办法是将 … 继续阅读把HIVE程序优化30倍的经验

Hive使用TRANSFORM运行Python脚本总结

1、Python环境设置 可以使用add cachearchive的方法把tar.gz添加到分布式缓存,Hive会自动解压压缩包,但是目录名是和压缩包名称一样的; add cachearchive ${env:my_workbench}/share/python2.7.tar.gz; –这样使用 using 'python2.7.tar.gz/bin/python my.py& … 继续阅读Hive使用TRANSFORM运行Python脚本总结

[转]Hive中对group结果分组取limit N值的实现

转载引言: 数据处理中遇到了取全国各个省份的效果数据先排序后limit 100的需求,HIVE自带功能无法实现,网上搜了下该文章的方法直接拷贝过来就能实现。将其中的代码复制过来后可以用maven打成Jar包,然后在hive中即可使用。 观察代码可以看出,由于是取各个分组的top数据,因此可以先用distribute和sort进行数据分区并排序,在各个reduce节点上,由于运行的是单个JVM虚拟机 … 继续阅读[转]Hive中对group结果分组取limit N值的实现

HIVE的几个使用技巧

1.小表在前,大表在后,如果表很小就用mapjoin 写JOIN的时候,将小表写在JOIN的前面,这样HIVE就会将小表载入内存,然后扫描大表。 如果表足够的小,就使用map join。 2.设定map的并发数,保证一次map结束;根据输入数据量估计reduce的tasks数目,并根据运行中间数据情况修正; http://superlxw1234.iteye.com/blog/1582880 3. … 继续阅读HIVE的几个使用技巧