hive
听见下雨的声音hb
一期一会,IT人生
展开
-
Hive 优雅的统计表(分区)numRows
## 只在HIVE中生效,SparkSQL中不生效 #### 非ORC文件会触发MapReduce任务进行统计-- 非分区表ANALYZE TABLE tmp.imei_md5_orc_zlib_bloom COMPUTE STATISTICS;-- 分区表ANALYZE TABLE stg.stg_dev_user_bhv_d PARTITION(day='20200425', s...原创 2020-04-28 16:29:46 · 2101 阅读 · 0 评论 -
Hive不同存储格式下的压缩算法对比
压缩算法 Text格式 Parquet格式 ORC格式 不压缩 119.2G 54.1G 20.0G Snappy压缩 30.2 G 23.6G 1...原创 2020-04-27 19:15:34 · 775 阅读 · 0 评论 -
Hadoop小文件处理
导读 HDFS作为Hadoop生态系统的分布式文件系统,设计是用来存储海量数据,特别适合存储TB、PB量级别的数据。但是随着时间的推移或者处理程序的问题,HDFS上可能会存在大量的小文件,进而消耗NameNode大量的内存,并且延长程序的运行时间。下面我就把对小文件的处理经验总结一下,供大家参考。引言 先来了解一下Hadoop中何为小文件:小文件指的是那些文件...原创 2018-10-17 09:54:33 · 7538 阅读 · 1 评论 -
hive常用语句
1、创建一张外部分区表(分区需要另外添加)CREATE EXTERNAL TABLE `ext_base_click`( `reqid` string, `adslotid` string, `ip` string, `timestamp` string, `adgroupid` string, `lbs` string)PARTITIONED BY ( `d...原创 2018-02-26 11:49:17 · 2868 阅读 · 3 评论 -
hive的map join原理
什么是MapJoin?MapJoin顾名思义,就是在Map阶段进行表之间的连接。而不需要进入到Reduce阶段才进行连接。这样就节省了在Shuffle阶段时要进行的大量数据传输。从而起到了优化作业的作用。 MapJoin的原理:即在map 端进行join,其原理是broadcast join,即把小表作为一个完整的驱动表来进行join操作。通常情况下,要连接的各个表里面的数据会分布...原创 2018-03-28 17:30:06 · 5967 阅读 · 0 评论 -
hive优化-存储格式
Hive中的文件格式大致上分为面向行和面向列两类: 面向行:同一行的数据存储在一起,即连续存储。TextFile,SequenceFile。采用这种方式,如果只需要访问行的一小部分数据,亦需要将整行读入内存,推迟序列化一定程度上可以缓解这个问题,但是从磁盘读取整行数据的开销却无法避免。面向行的存储适合于整行数据需要同时处理的情况。 面向列:整个文件被切割为若干列数据,每一列数据一起存...原创 2018-04-13 11:46:37 · 395 阅读 · 0 评论 -
hive文件过多问题总结
一、输入文件过多1、Hive的创建文件数的限制 Hive对文件创建的总数是有限制的,这个限制取决于参数:hive.exec.max.created.files,默认值是10000。如果现在你的表有60个分区,然后你总共有2000个map,在运行的时候,每一个mapper都会创建60个文件,对应着每一个分区,所以60*2000> 120000,就会报错:exceeds 1000...原创 2018-06-27 14:32:36 · 3184 阅读 · 0 评论 -
hive动态分区
hive静态分区需要制定分区字段的值插入分区数据,动态分区可以根据分区字段的值自动插入对应分区。使用Hive的动态分区,需要进行相应的配置。-- 设置成true,可以选择GZip压缩方式set hive.exec.compress.output=true;-- GZip压缩方式具有很好的压缩效果,减少I/O,GZip压缩格式文件是不允许被分割的set mapred.output.comp...原创 2018-08-25 11:00:44 · 1079 阅读 · 0 评论 -
hive参数调优文章
Hive篇---Hive使用优化; Hive Setting调优原创 2018-10-18 15:12:02 · 939 阅读 · 0 评论 -
hive使用压缩
转载地址:https://zhuanlan.zhihu.com/p/34437382hive中的数据使用压缩的好处(执行查询时会自动解压):可以节约磁盘的空间,基于文本的压缩率可达40%+; 压缩可以增加吞吐量和性能量(减小载入内存的数据量),但是在压缩和解压过程中会增加CPU的开销。所以针对IO密集型的jobs(非计算密集型)可以使用压缩的方式提高性能。主流的压缩算法查看集群的支...转载 2019-07-24 18:45:11 · 515 阅读 · 0 评论 -
hive存储格式parquet
Hive0.13以后的版本创建存储格式为parquet的hive表:CREATE TABLE parquet_test (id int,str string,mp MAP<STRING,STRING>,lst ARRAY<STRING>,strct STRUCT<A:STRING,B:STRING>)PARTITIONED BY...原创 2019-07-26 16:53:20 · 10850 阅读 · 0 评论 -
hive内部分区表(ORC格式)新增字段后出现的问题
hive内部分区表(ORC格式)在新增字段后出现的问题:1、在新增字段后的分区内查询数据 正常2、在新增字段前的分区内查询数据 异常3、分区删不掉,一直卡着不动出现原因:当我们修改hive表结构以后,mysql中元数据库中的SDS中该hive表对应的CD_ID会改变,但是该hive表旧的分区下面对应的CD_ID还是原来表的CD_ID.解决方案:该方法同样适用解决(对Hive分区表新增字段后,在执行...原创 2017-06-17 14:07:07 · 9475 阅读 · 0 评论 -
MapReduce UI
进入Job 界面的 Configuration中mapreduce.workflow.name :hive执行sqlhive.query.string : hive执行sql原创 2017-10-27 10:11:01 · 505 阅读 · 0 评论 -
数据仓库
为什么要分层我们对数据进行分层的一个主要原因就是希望在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围原创 2018-01-02 19:01:36 · 496 阅读 · 0 评论 -
hive生成的文件数过多
当Hive输入由很多个小文件组成,由于每个小文件都会启动一个map任务,如果文件过小,以至于map任务启动和初始化的时间大于逻辑处理的时间,会造成资源浪费,甚至OOM。为此,当我们启动一个任务,发现输入数据量小但任务数量多时,需要注意在Map前端进行输入合并当然,在我们向一个表写数据时,也需要注意输出文件大小1. Map输入合并小文件对应参数:set mapred.max.转载 2017-02-27 11:32:31 · 5317 阅读 · 0 评论 -
Hbase整合hive
HBase是被设计用来做k-v查询的,但有时候,也会遇到基于HBase表的复杂统计,写MR很不方便。Hive考虑到了这点,提供了操作HBase表的接口。使用Hive操作HBase中的表,只是提供了便捷性,对于性能上,较MapReduce并不会提升太多,请大家酌情使用(建议只用于离线查询)1、在hbase中创建好表(通过hbase shell命令创建)2、在hive中创建于hbase对应的原创 2017-05-20 11:14:02 · 440 阅读 · 0 评论 -
Pig、Hive、MapReduce解决分组Top K问题(组内排序)
问题:有如下数据文件 city.txt (id, city, value)cat city.txt 1 wh 5002 bj 6003 wh 1004 sh 4005 wh 2006 bj 1007 sh 2008 bj 3009 sh 900需要按 city 分组聚合,然后从每组数据中取出前两条value最大的记录。1、这是实际业务转载 2017-07-06 13:42:48 · 1301 阅读 · 0 评论 -
hive数据倾斜解决方案
在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据均匀的原创 2017-05-26 10:58:34 · 374 阅读 · 0 评论 -
hive合并小文件
Hive的后端存储是HDFS,它对大文件的处理是非常高效的,如果合理配置文件系统的块大小,NameNode可以支持很大的数据量。但是在数据仓库中,越是上层的表其汇总程度就越高,数据量也就越小。而且这些表通常会按日期进行分区,随着时间的推移,HDFS的文件数目就会逐渐增加。小文件带来的问题关于这个问题的阐述可以读一读Cloudera的这篇文章。简单来说,HDF转载 2017-08-07 11:03:00 · 445 阅读 · 0 评论 -
Hive on Spark调优
之前在Hive on Spark跑TPCx-BB测试时,100g的数据量要跑十几个小时,一看CPU和内存的监控,发现POWER_TEST阶段(依次执行30个查询)CPU只用了百分之十几,也就是没有把整个集群的性能利用起来,导致跑得很慢。因此,如何调整参数,使整个集群发挥最大性能显得尤为重要。Spark作业运行原理spark-base-mech.jpg详细原理见上图。我们使用sp...转载 2017-08-10 17:31:26 · 22171 阅读 · 3 评论 -
Hive和SparkSQL自定义UDF中依赖第三方Jar包
当在Hive和SparkSQL中使用的自定义UDF函数需要依赖第三方jar包时,可以将所有jar包通过类似于fatjar等插件打在一起,但显得太麻烦、太累赘了。其实只需要在运行时候将依赖的第三方jar包和udf函数jar包一起添加到CLASSPATH这种即可;这里的SparkSQL指整合了Hive的。Hive中添加第三方JAR包1:启用hive-cli时候,使用–a转载 2017-08-25 17:54:39 · 3054 阅读 · 0 评论 -
hive 配置参数说明
hive.exec.mode.local.auto 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) true hive.exec.mode.local.auto.inputbytes.max 如果 hive.exec.mode.local.auto 为 true,当输入文件大小小于此阈值时可以自动在本地模式...转载 2017-08-28 17:39:29 · 357 阅读 · 0 评论 -
Hive内置聚合函数
聚合函数下表为Hive内置的聚合函数。返回类型函数名描述BIGINTcount(*)count(expr)count(DISTINCT expr[, expr_.])count(*) – 返回检索到的行的总数,包括含有NULL值的行。count(expr)原创 2017-11-09 10:48:45 · 981 阅读 · 0 评论 -
hive控制文件生成个数
在有些时候,想要控制hql执行的mapper,reducer个数,reducer设置过少,会导致每个reducer要处理的数据过多,这样可能会导致OOM异常,如果reducer设置过多,则会导致产生很多小文件,这样对任务的执行以及集群都不太好.通常情况下这两个参数都不需要手动设置,Hive会根据文件的大小和任务的情况自动计算,但是某些特殊情况下可能需要进行调优,下面列举两个常用的调优场景看看这两个转载 2017-02-27 12:58:01 · 14506 阅读 · 0 评论 -
hive条件函数
条件函数1. If函数: if语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)返回值: T说明: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull举例:hive> select if(原创 2017-01-05 10:33:01 · 4850 阅读 · 0 评论