![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hive相关
shj1119
这个作者很懒,什么都没留下…
展开
-
关于hive语句执行时的map个数
最近遇到一个颇感困扰的问题,因为之前的小脚本已经成型了,但效率挺低,考虑优化的事情。 优化大致从三个方向考虑:脚本里面的逻辑优化,脚本里边的sql语句优化,集群优化。 因为脚本整体很简单,目前分析指标也很简单,对于脚本以及分析语句再次核查,没发现值得优化的地方。而整个集群的优化,又只有3台机器,数据量一天1G左右,仿佛也没优化的必要性。可就这么小的原创 2013-05-16 14:57:07 · 2396 阅读 · 0 评论 -
关于decimal与double数据类型
关于double和decimal类型,double类型能表示的精度不如decimal,但是其数据范围比decimal的大。对于double类型的字段,用sum函数会出现多位小数的情况,比如a+b+c原来的值应该是556361.927,但用sum函数得到的却是556361.9269999999而如果将abc转为decimal类型,则此问题解决原创 2014-05-29 11:34:20 · 8740 阅读 · 0 评论 -
hive时间戳转换
10位的时间戳值,即1970-1-1至今的秒,可以用from_unixtime()转为时间,而13位的所谓毫秒的是不可以的原创 2014-05-29 11:36:03 · 5957 阅读 · 0 评论 -
hive优化总结
最近在做hive sql优化相关的一些工作,一些经历与同事分享的同时,记录于此。在优化过程中的一些总结,可能有的地方说法有待进一步验证,如下: 1 在union all子句里边最好不要有join,应该先union all之后再与其它表join,group by也是如此。 2 下面的情况除外:union all之后的表,如果是要与一个超级大表join,那么需要想原创 2014-03-17 10:22:30 · 611 阅读 · 0 评论 -
如何求某个分组里面的最小时间点对应的那条记录
前段时间遇到一个需求是求一组数据里边,距离某原创 2014-07-09 21:36:07 · 1644 阅读 · 0 评论 -
hivesql语法经验
在写及测的过程中发现的,有一些可能需要进一步验证。1 FAILED: NullPointerException null 不能用视图作为left outer join的右表2 FAILED: UDFArgumentTypeException Only numeric or string type arguments are accepted but decimal is原创 2014-03-17 10:15:40 · 20015 阅读 · 0 评论 -
关于连续的join
曾经写过用四个表连续left join的语句,执行速度特别慢,原创 2014-08-27 17:59:50 · 3711 阅读 · 0 评论 -
改列类型
aLTER TABLE *** CHANGE 字段x 字段x string后来发现不生效,表里已经变了,但数据依然插不进去删除重建才好的,待查alter table *** change 价格 价格 double这个改完再用却生效了原创 2014-05-29 11:50:41 · 516 阅读 · 0 评论 -
hive脚本+shell执行方式
2 目前采用的解决传递参数问题的方法: 原来的将hive脚本单独写在一个文件中,在shell中定义参数,在hive文件中直接用参数,是无法将值传递过去的。 现在在shell中,使用cat命令,把hive脚本输出在一个文件中,在这里直接给参数传值是能传进去的,再用hive -f调用生成的hive脚本文件。 cat命令输出时,会把一个\当成转义字符,导致生成的文件中就只有一个\了。原创 2013-04-19 13:26:14 · 2784 阅读 · 0 评论 -
streamtable关键字
join一般都是在reduce阶段完成的,因为在map阶段无法使同样key值的分在一个map上。而在reduce阶段的join,hive默认把左表数据放在缓存中,右边表的数据做流数据。如果你想更改这种模式的话,就用/*+streamtable(表名)*/来指定你想要做为流数据的表。最好每次写join时,小表放左边,大表放右边。试过几十万的表和1亿的表,在hive不转为map joi原创 2014-05-29 11:43:03 · 2161 阅读 · 0 评论 -
数据倾斜2
如何避免因空值或者无意义的异常值引起的数据倾斜?首先查看是否是这些值导致的倾斜,用select key,count(1) from table group by key。如果是的话,解决方法为在on时,如下写:on case when length(a.key)符合异常条件 then concat(a.key,rand()) else a.key end =b.key;原创 2014-05-29 11:41:48 · 643 阅读 · 0 评论 -
关于lzo
要先用lzop命令压缩成lzo文件,接收到后用hadoop lzoindex命令生成索引,才能使用lzo格式,否则一个文件在mapreduce时只有一个map原创 2014-05-29 11:35:15 · 652 阅读 · 0 评论 -
关于hive语句执行时的map个数(二)
发现我一个很大的问题,不喜欢看源代码,唉,静不下心来,浮躁。。。 继续上一篇文章,提到combinHiveinputformat,看不懂,没去仔细看。直接操作,把hive-site.xml中的此项值改为了hiveinputformat,发现hive sql语句执行的时候基本是按照文件个数(小文件1个文件对应1个map,大的切分了多个map,与之原创 2013-05-17 11:23:08 · 906 阅读 · 0 评论 -
移动指定的文件到新目录
这两天还是在弄优化的东西,想弄明白combinehiveinputformat到底是如何分片的,看了源代码没看懂,看网上的某些文章说是先把文件全合并,再按blocksize来分,可实际测试起来却不像这么回事。造了大量的数据,现在试图理出256m大小的文件来,看看这个临界值附近发生什么情况。 因为要将原来的几百兆里面理出来某些文件,同时不想影响文件个数,最后使用find .原创 2013-05-21 16:51:56 · 635 阅读 · 0 评论 -
关于map个数的指定与分配(三)
参考文章:http://blog.csdn.net/strongerbit/article/details/7440111 map的个数很大程度上是无法人为控制的,它由输入文件的个数和大小所控制,用户自己定义的值只能大于系统自己计算出来的值,因此在接口文档里说org.apache.hadoop.mapred.JobConf.setNumMapTasks(int n) ”No原创 2013-05-22 15:22:06 · 1193 阅读 · 0 评论 -
hive服务端启动
hive 远程服务 (端口号10000) 启动方式, hive –service hiveserver & (后台启动)指定端口 :$HIVE_HOME/bin/hive --service hiveserver 10001 >/dev/null 2>/dev/null &原创 2013-05-08 15:17:49 · 1009 阅读 · 0 评论 -
reduce个数的决定因素
reduce数量由以下三个参数决定,mapred.reduce.tasks(强制指定reduce的任务数量)hive.exec.reducers.bytes.per.reducer(每个reduce任务处理的数据量,默认为1000^3=1G)hive.exec.reducers.max(每个任务最大的reduce数,默认为999)计算reducer数的公式很简单N=转载 2013-05-23 16:29:06 · 2451 阅读 · 1 评论 -
hive效率优化
http://minidb.sinaapp.com/?p=186http://www.verydemo.com/demo_c152_i9269.htmlhttp://www.brianzhang.me/post/2012-12-25/40046075766http://osdir.com/ml/java-hadoop-hive-user/2011-11/msg00088.htm转载 2013-05-23 16:36:22 · 441 阅读 · 0 评论 -
hive分区语句
hive>create table result (ip string,num int) partitioned by (dt string); insert overwrite table result partition (dt='2011-09-22') select ipaddress,count(1) as numrequest from maptile group by ipadd转载 2013-06-04 16:44:19 · 596 阅读 · 0 评论 -
Specified key was too long; max key length is 767 bytes问题
hive的Specified key was too long; max key length is 767 bytes问题:alter database hivedb character set latin1;原创 2013-06-04 16:40:42 · 962 阅读 · 0 评论 -
hive建表存储格式造成的问题
用create table tableY as select 字段A,regexp_extractA,字段B,regexp_extractB from tableX 之后,数据比原来多了5条经查找,这5条都是其中一个字段为NULL,另外的字段全部=''百思不得其解后查询了下tableY建表的存储格式是默认的text,而tableX建表时用的是rcfile将t原创 2015-09-22 17:39:44 · 783 阅读 · 0 评论