Hive
JNSimba
腹有诗书气自华,快叫我长胖一点吧~~~~~
展开
-
Hive取非Group by字段数据的方法
遇到这么一个需求,输入数据为一个ID对应多个name,要求输出数据为ID是唯一的,name随便取一个就可以。执行以下hive ql语句:123456SELECT sid, class_id FROM table2 GROUP BY sid ;会报错:转载 2016-03-23 14:33:59 · 6879 阅读 · 2 评论 -
Hive多字节分隔符
Hive默认支持只支持单字节,参考(https://issues.apache.org/jira/browse/HIVE-237) 多字节分隔符可参考(https://cwiki.apache.org/confluence/display/Hive/MultiDelimitSerDe) CREATE TABLE test ( id string, hivearray a...原创 2018-09-05 18:28:54 · 1522 阅读 · 0 评论 -
Parquet与ORC:高性能列式存储格式
背景随着大数据时代的到来,越来越多的数据流向了Hadoop生态圈,同时对于能够快速的从TB甚至PB级别的数据中获取有价值的数据对于一个产品和公司来说更加重要,在Hadoop生态圈的快速发展过程中,涌现了一批开源的数据分析引擎,例如Hive、Spark SQL、Impala、Presto等,同时也产生了多个高性能的列式存储格式,例如RCFile、ORC、Parquet等,本文主要从实现的角度转载 2017-10-24 19:13:31 · 766 阅读 · 0 评论 -
pyhs2读取Hive
版本/平台原因,SparkSql无法读取实时ORC分区表,采用Pyhs2读取import pyhs2 #连接hive客户端def get_hiveserver_connect(): con=pyhs2.connect(host="localhost", port=8000, authMecha原创 2017-09-02 18:23:06 · 4929 阅读 · 0 评论 -
Hive实现分页的方法
hive没有像MySQL那样的limit start,end那样的写法实现分页,所以需要使用别的方式来实现分页。以下是我想到的两种方式:一、借助唯一标识字段如果分页的表有唯一标识的字段,可以通过这个字段来实现分页:获取第一页数据:注:同时需要记录这10条中最大的id为preId,作为下一页的条件。select * from table order by id asc原创 2016-05-05 16:25:25 · 45466 阅读 · 8 评论 -
Hive的UDAF
Hive中的UDAF是多进一出,类似聚合函数Count(),Sum()以前的写法是继承UDAF类,然后实现UDAFEvaluator接口实现里面的方法,具体如下,是一个sum的demopublic class Test_Sum extends UDAF { public static class Evaluator implements UDAFEvaluator {原创 2017-02-12 15:50:34 · 5001 阅读 · 0 评论 -
Hive永久函数
在使用UDF的时候我们往往需要首先添加jar包,其次创建临时函数,最后才可以传入参数使用,如下:add jar /root/hive-0.0.1-SNAPSHOT.jar;create temporary function get_value as 'com.test.udf.TokenValue';select get_value(url,"name") from testudf where u原创 2016-09-10 17:06:15 · 3369 阅读 · 0 评论 -
Hive运行原理
http://www.it165.net/pro/html/201606/70010.html原创 2016-09-18 22:18:48 · 3641 阅读 · 0 评论 -
Hive动态分区
insert overwrite table_part1 partition(dt="2016-09-03")select * from test_data test_data |id|name| |1|ming| |2|li| |3|he|上面代码是往表的某一个固定分区插入数据 但是当我们要插入的分区不确定的时候,该怎么做? 这时候就会用到动态分区。 insert overwrit原创 2016-09-04 22:25:28 · 1251 阅读 · 0 评论 -
RCFile和ORCFile
1. RCFileRCFile文件格式是FaceBook开源的一种Hive的文件存储格式,首先将表分为几个行组,对每个行组内的数据进行按列存储,每一列的数据都是分开存储,正是先水平划分,再垂直划分的理念。在存储结构上: 如上图是HDFS内RCFile的存储结构,我们可以看到,首先对表进行行划分,分成多个行组。一个行组主要包括:16字节的HDFS同步块信息,主要是为了区分一个HDFS块上的相邻行组;原创 2016-09-04 20:54:43 · 21522 阅读 · 0 评论 -
hive之窗口函数理解与实践
首先,我们要知道什么是窗口子句:需要指定一个窗口的边界,语法是这样的:ROWS betweenCURRENT ROW | UNBOUNDED PRECEDING | [num] PRECEDING AND UNBOUNDED FOLLOWING | [num] FOLLOWING| CURRENT ROW或RANGE between [num] PRECE转载 2016-09-16 18:22:39 · 867 阅读 · 0 评论 -
Hive函数
Hive函数分为简单函数、窗口函数、分析混合函数、自定义函数(UDF/UDAF)等查看Hive中函数基本命令show functions ----列出所有函数desc function count ----查看count函数的用法desc function extended count ---查看详细用法,并且会举出一个简单例子简单函数1.if函数hive原创 2016-09-16 18:17:37 · 2387 阅读 · 0 评论 -
Hive的Collect函数
有以下表 id name 1001 A 1001 B 1001 C实现以下功能 id name 1001 A,B,C即按照id 进行group by,将每个id的name组成一个list放到name字段中。select id,collect_list(name) from table group by id若name中有重复的值,可以用collect_原创 2016-08-24 09:22:59 · 27739 阅读 · 1 评论 -
Hive中的正则表达式
在Hive中查看字段的时候,有时候会需要匹配正则表达式比较方便,以前一直使用like,但是毕竟有限Hive中可以使用自带的函数regexp_extract(string,regex,index)来判断比如下面的语句select regexp_extract('www.baidu.com','[\\w\\.]+',0) from test1 limit 10;特别注意的是hive中原创 2016-07-26 21:40:02 · 19634 阅读 · 0 评论 -
Hive压缩格式
TextFileHive数据表的默认格式,存储方式:行存储。可使用Gzip,Bzip2等压缩算法压缩,压缩后的文件不支持split但在反序列化过程中,必须逐个字符判断是不是分隔符和行结束符,因此反序列化开销会比SequenceFile高几十倍。--创建数据表:create table if not exists textfile_table(site string,url转载 2016-09-10 22:08:53 · 2045 阅读 · 0 评论 -
Hive存储过程和自定义函数
之前在Hive中使用自定义函数,是通过udf/udaf来实现,通常是基于Java或Python来实现。最近发现神器Hplsql(http://www.hplsql.org),可兼容mysql等存储过程等语法,并且已经集成到Hive2.0+版本。业务背景:在做数据处理时,Mysql中有大量的存储过程,当数据量特别大的时候,Mysql存储过程执行缓慢,一个存储过程执行耗时数小时。由于需...原创 2019-03-22 09:31:26 · 5583 阅读 · 0 评论