Hive
文章平均质量分 81
wisgood
这个作者很懒,什么都没留下…
展开
-
hive 的 left semi join 讲解
介绍LEFT SEMI JOIN (左半连接)是 IN/EXISTS 子查询的一种更高效的实现。Hive 当前没有实现 IN/EXISTS 子查询,所以可以用LEFT SEMI JOIN 重写你的子查询语句。示例可以改写为特点1、left semi join 的限制是, JOIN 子句中右边的表只能在 ON 子句中设置过滤条件,在 WHERE 子句...原创 2019-11-12 11:26:57 · 1547 阅读 · 0 评论 -
hive bucket
hive中table可以拆分成partition,table和partition可以通过‘CLUSTERED BY ’进一步分bucket,bucket中的数据可以通过‘SORT BY’排序。bucket主要作用:1. 数据sampling2. 提升某些查询操作效率,例如mapside join需要特别注意的是:clustered by和sorted by不会影响数据的导入,这意味转载 2013-12-07 11:26:19 · 1466 阅读 · 0 评论 -
Hive 基础之:分区、桶、Sort Merge Bucket Join
Hive 已是目前业界最为通用、廉价的构建大数据时代数据仓库的解决方案了,虽然也有 Impala 等后起之秀,但目前从功能、稳定性等方面来说,Hive 的地位尚不可撼动。其实这篇博文主要是想聊聊 SMB join 的,Join 是整个 MR/Hive 最为核心的部分之一,是每个 Hadoop/Hive/DW RD 必须掌握的部分,之前也有几篇文章聊到过 MR/Hive 中的 join,其实转载 2013-12-07 11:53:24 · 31132 阅读 · 8 评论 -
Hadoop Pig、Hive 自定义输入输出分隔符
PIG中输入输出分隔符默认是制表符\t,而到了hive中,默认变成了八进制的\001,也就是ASCII: ctrl - AOct Dec Hex ASCII_Char 001 1 01 SOH (start of heading)官方的解释说是尽量不和文中的字符重复,因此选用了 crtrl - A,单个的字符可以通过row转载 2013-12-07 12:06:27 · 3752 阅读 · 0 评论 -
利用eclipse编写自定义hive udf函数
在做日志分析的过程中,用到了hadoop框架中的hive,不过有些日志处理用hive中的函数处理显得力不从心,就需要用udf来进行扩展处理了1 在eclipse中新建java project hiveudf 然后新建class package(com.afan) name(UDFLower)2 添加jar library hadoop-0.20.2-core.ja转载 2013-12-07 12:12:17 · 2533 阅读 · 0 评论 -
hive lateral view语句:列拆分成行
原文地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+LateralView#lateral view用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。一个简单的例子,假设我们有一张表pageAds,它有两列数据,第一列是pag转载 2013-12-07 12:33:11 · 8927 阅读 · 0 评论 -
几种 hive join 类型简介
作为数据分析中经常进行的join 操作,传统DBMS 数据库已经将各种算法优化到了极致,而对于hadoop 使用的mapreduce 所进行的join 操作,去年开始也是有各种不同的算法论文出现,讨论各种算法的适用场景和取舍条件,本文讨论hive 中出现的几种join 优化,然后讨论其他算法实现,希望能给使用hadoop 做数据分析的开发人员提供一点帮助. Facebook 今年在转载 2013-12-07 20:37:17 · 1587 阅读 · 0 评论 -
Hive 在多维统计分析中的应用 & 技巧总结
多维统计一般分两种,我们看看 Hive 中如何解决:1、同属性的多维组合统计(1)问题:有如下数据,字段内容分别为:url, catePath0, catePath1, catePath2, unitparamshttps://cwiki.apache.org/confluence 0 1 8 {"store":{"fruit":[{"weight":1,"ty转载 2013-12-07 12:00:49 · 9072 阅读 · 0 评论 -
Hive 中 Map Join 的适用场景:非等值连接
最近开发中遇到几种应用,刚好使用MAPJOIN来解决实际的问题。应用共同点如下:1: 有一个极小的表行2: 需要做不等值join操作(a.x 这种操作如果直接使用join的话语法不支持不等于操作,hive语法解析会直接抛出错误如果把不等于写到where里会造成笛卡尔积,数据异常增大,速度会很慢。甚至会任务无法跑成功~根据mapjoin的计算原理,转载 2013-12-07 12:02:02 · 5791 阅读 · 0 评论 -
hive优化之 —— 控制hive任务中的map数和reduce数
一、 控制hive任务中的map数: 1. 通常情况下,作业会通过input的目录产生一个或者多个map任务。 主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改);2. 举例: a) 假设input目录下有转载 2013-12-07 12:35:53 · 1493 阅读 · 0 评论 -
Hive 常见问题与技巧
1Q: 是否有像类似于phpmyadmin一样的hive查询客户端,能以界面的方式查询hive语句和导出数据A: 有的,客户端的话可以使用squirrel来连接hive,squirrel是一个通用的数据库查询客户端,还有有一个开源项目phphiveadmin也不错,web方式访问hive,这里也有一个hive web client(https://github.com/lalagu转载 2013-12-07 11:55:54 · 5205 阅读 · 0 评论 -
通过hiveserver远程服务构建hive web查询分析工具
(1)hive 三种启动方式及用途,本文主要关注通过hiveserver(可jdbc连接)的方式启动 1, hive 命令行模式,直接输入/hive/bin/hive的执行程序,或者输入 hive --service cli 用于linux平台命令行查询,查询语句基本跟mysql查询语句类似 2, hive web界面的启动方式,hive --servi转载 2013-12-07 12:05:49 · 5756 阅读 · 0 评论 -
hive 分区(partition)简介
网上有篇关于hive的partition的使用讲解的比较好,转载了:一、背景1、在Hive Select查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此建表时引入了partition概念。2、分区表指的是在创建表时指定的partition的分区空间。3、如果需要创建有分区的表,需要在create表的时候调用可选参数转载 2013-12-07 15:04:19 · 12528 阅读 · 0 评论 -
hive 使用lzo遇到的一个奇怪的问题
hive 使用lzo遇到的一个奇怪的问题原创 2013-12-13 17:16:35 · 3235 阅读 · 2 评论 -
hive join
hive(0.9.0):1.支持equality joins, outer joins, and left semi joins2.只支持等值条件3.支持多表join原理hive执行引擎会将HQL“翻译”成为map-reduce任务,如果多张表使用同一列做join则将被翻译成一个reduce,否则将被翻译成多个map-reduce任务。eg:SELECT a.val转载 2013-12-16 19:47:09 · 907 阅读 · 0 评论 -
Hive性能调校
1. 设置hive.map.aggr=true,提高HiveQL聚合的执行性能。这个设置可以将顶层的聚合操作放在Map阶段执行,从而减轻清洗阶段数据传输和Reduce阶段的执行时间,提升总体性能。缺点:该设置会消耗更多的内存。注:顶层的聚合操作(top-levelaggregation operation),是指在group by语句之前执行的聚合操作。例如,hive>转载 2013-12-16 17:34:45 · 9992 阅读 · 0 评论 -
Hive的JOIN用法
Hive表连接的语法支持如下:Sql代码 join_table: table_reference JOIN table_factor [join_condition] | table_reference {LEFT|RIGHT|FULL} [OUTER] JOIN table_reference join_condition | ta转载 2013-12-16 19:34:44 · 12188 阅读 · 0 评论 -
hive case when 引发错误一例
今天发现hive 在使用 case when then else end 方式下会存在BUG, 具体表现如下,现有表: t_aa_pc_log, 其中一个字段为channel, 当channel值为'NA'或者'EMPTY'时设置为'A', 其他值设置为'B', 然后输出channel值为'A'的前10个记录查询一:根据需求写出SQL:select a.channel from转载 2013-12-16 10:27:35 · 17904 阅读 · 2 评论 -
hive 结合执行计划 分析 limit 执行原理
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yaoyinjie.blog.51cto.com/3189782/923378 在hive查询中要限制查询输出条数, 可以用limit 关键词指定,如 select columnname1 from table1 limit 10; 这样hive将输出符合查询条件的转载 2013-12-17 09:24:54 · 1364 阅读 · 0 评论 -
mapreduce作业优化-MultithreadedMapRunner
最近日志解析框架新接入一种日志, 这些原始日志是经过加密的, mr程序解析时需要先解密再解析,实际解析过程中发先原始日志量并不大(30W), 但解析花费时间较长, 经分析,是解密操作比较耗CPU时间, 想到的一种解决方案是在日志采集阶段将日志分散到多个小文件,这样可以充分利用多map并行的优势,但缺点也很明显, HDFS系统将存在很多小文件,对namenode造成负担,同时这个方案需要修改日志采集转载 2013-12-17 09:26:46 · 1262 阅读 · 0 评论 -
hive 查询显示列名 及 行转列显示
hive默认查询不会显示列名, 当一个表字段比较多的时候,往往看不出值与列之间的对应关系,对日常查错及定位问题带来不便,应同事要求,看了HIVE CLI源码,做了下些许调整, 加入列头打印及行转列显示功能未开启行转列功能之前:hive> > > select * from example_table where dt='2012-03-31-02' limit 2;转载 2013-12-17 09:28:59 · 4907 阅读 · 0 评论 -
hive SQL优化之distribute by和sort by
最近在优化hiveSQL,下面是一段排序,分组后取每组第一行记录的SQLINSERT OVERWRITE TABLE t_wa_funnel_distinct_temp PARTITION (pt='${SRCTIME}') SELECT bussiness_id, cookie_id, session_id, funnel_id, group_转载 2013-12-17 09:42:18 · 1843 阅读 · 0 评论 -
hive交互模式和非交互模式
hive交互模式和非交互模式原创 2014-01-01 15:06:14 · 7462 阅读 · 1 评论 -
hive array、map、struct使用
hive提供了复合数据类型:Structs: structs内部的数据可以通过DOT(.)来存取,例如,表中一列c的类型为STRUCT{a INT; b INT},我们可以通过c.a来访问域aMaps(K-V对):访问指定域可以通过["指定域名称"]进行,例如,一个Map M包含了一个group-》gid的kv对,gid的值可以通过M['group']来获取Arrays:array中的转载 2014-01-01 21:47:19 · 1066 阅读 · 0 评论 -
Hive Lateral view介绍
1). Lateral View语法lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)* fromClause: FROM baseTable (lateralView)*2). Lateral View用于UDTF(user-defined table转载 2013-12-26 09:43:41 · 14013 阅读 · 0 评论 -
Hive – Group By 的实现
准备数据SELECT uid, SUM(COUNT) FROM logs GROUP BY uid;hive> SELECT * FROM logs;a 苹果 5a 橙子 3a 苹果 2b 烧鸡 1 hive> SELECT uid, SUM(COUNT) FROM logs GROUP BY uid;转载 2013-12-24 16:58:07 · 1791 阅读 · 0 评论 -
Hive中小表与大表关联(join)的性能分析
经常看到一些Hive优化的建议中说当小表与大表做关联时,把小表写在前面,这样可以使Hive的关联速度更快,提到的原因都是说因为小表可以先放到内存中,然后大表的每条记录再去内存中检测,最终完成关联查询。这样的原因看似合理,但是仔细推敲,又站不住脚跟。 多小的表算小表?如果所谓的小表在内存中放不下怎么办?我用2个只有几条记录的表做关联查询,这应该算是小表了,在查看reduce的执行日转载 2014-01-01 21:59:19 · 8583 阅读 · 0 评论 -
hive 初始化运行流程
CliDriver 初始化过程 CliDriver.main 是 Cli 的入口 (1) 解析(Parse)args,放入cmdLine,处理 –hiveconf var=val 用于增加或者覆盖hive/hadoop配置,设置到System的属性中。 (2) 配置log4j,加载hive-log4j.properties里的配置信息。 (3)创建一个HiveC转载 2014-01-02 21:49:59 · 1431 阅读 · 0 评论 -
hive语句优化-通过groupby实现distinct
hive语句优化-通过groupby实现distinct原创 2014-01-09 14:31:06 · 27077 阅读 · 3 评论 -
HIVE中UDTF编写和使用
1. UDTF介绍UDTF(User-Defined Table-Generating Functions) 用来解决 输入一行输出多行(On-to-many maping) 的需求。2. 编写自己需要的UDTF继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF。实现initialize, process,转载 2013-12-26 09:56:09 · 3473 阅读 · 0 评论 -
Hive-UDAF开发指南
Hive进行UDF开发十分简单,此处所说UDF为Temporary的function,所以需要hive版本在0.4.0以上才可以。一、背景:Hive是基于Hadoop中的MapReduce,提供HQL查询的数据仓库。Hive是一个很开放的系统,很多内容都支持用户定制,包括:a)文件格式:Text File,Sequence Fileb)内存中的数据格式: Java Integer/St转载 2014-01-16 14:28:26 · 832 阅读 · 0 评论 -
hive join
hive(0.9.0):1.支持equality joins, outer joins, and left semi joins2.只支持等值条件3.支持多表join原理hive执行引擎会将HQL“翻译”成为map-reduce任务,如果多张表使用同一列做join则将被翻译成一个reduce,否则将被翻译成多个map-reduce任务。eg:SELECT a.val转载 2014-02-22 22:29:07 · 829 阅读 · 0 评论 -
hive常用技术博客
http://blog.csdn.net/lalaguozhe/article/category/1446049原创 2014-02-23 21:01:05 · 954 阅读 · 0 评论 -
hive参数hive.mapred.mode分析
Hive配置中有个参数hive.mapred.mode,分为nonstrict,strict,默认是nonstrict如果设置为strict,会对三种情况的语句在compile环节做过滤:1. 笛卡尔积Join。这种情况由于没有指定reduce join key,所以只会启用一个reducer,数据量大时会造成性能瓶颈[java] view plainc原创 2014-02-23 21:05:06 · 1260 阅读 · 0 评论 -
hive中生成从1到n的连续数字的UDTF方法
之前在博客中分享了个生成从1到n的连续数字的transform或map方法,最近研究了一下UDTF,发现用UDTF写出来的函数用起来更方便,语法更接近于普通的函数。而且在JAVA中对参数的个数、类型等进行校验也更容易。 ORACLE中生成从1到n的连续数字的方法很多,最简单的一种是:select level from dual connect by level转载 2014-02-23 22:31:06 · 9449 阅读 · 0 评论 -
hive 配置参数说明
hive.exec.mode.local.auto 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) 默认值:true hive.exec.mode.local.auto.inputbytes.max 如果 hive.exec.mode.local.auto 为 true,当输入文件大小小于此阈值时可以转载 2014-02-23 20:41:01 · 3264 阅读 · 0 评论 -
Hive数据倾斜总结
在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据均匀的原创 2013-12-07 20:50:52 · 1132 阅读 · 0 评论 -
hive文件存储格式
hive在建表是,可以通过‘STORED AS FILE_FORMAT’ 指定存储文件格式例如:> CREATE EXTERNAL TABLE MYTEST(num INT, name STRING)> ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'> STORED AS TEXTFILE> LOCATION '/data/test';原创 2013-12-07 20:38:47 · 1148 阅读 · 0 评论 -
hive优化方式和使用技巧
部分内容出处:http://www.atatech.org/article/detail/5617/0http://www.atatech.org/article/detail/4392/515 一.UDFS函数介绍1. 基本UDF(1)SHOWFUNCTIONS:这个用来熟悉未知函数。 DESCRIBE FUNCTION;(2)A原创 2013-12-13 14:31:08 · 21250 阅读 · 2 评论 -
hive中使用自定义函数(UDF)实现分析函数row_number的功能
1. hive0.10及之前的版本没有row_number这个函数,假设我们现在出现如下业务场景,现在我们在hdfs上有个log日志文件,为了方便叙述,该文件只有2个字段,第一个是用户的id,第二个是当天登录的timestamp,现在我们需要求每个用户最早登录的那条记录(注意不是仅仅只要那个登录的timestamp),可以方便计算NewUser。2. 我们的数据是这样的:1,322,463,3...原创 2014-02-24 10:39:12 · 1532 阅读 · 0 评论