hive建表没使用LZO存储格式,可是数据是LZO格式时遇到的问题
今天微博大数据平台发邮件来说。他们有一个hql执行失败。可是从gateway上面的日志看不出来是什么原因导致的,我帮忙看了一下。最后找到了问题的解决办法,下面是分析过程:
1、执行失败的hql:
INSERT OVERWRITE TABLE brand_ad_user_with_interact_score_3
select a.uid, a.brand, a.friend, CASE b.weight WHEN NULL THEN '0.000000' ELSE b.weight END
from brand_ad_2hop_3 a
LEFT OUTER join ods_bas_user_interact_score_to_thin_3 b
on (a.uid = b.fid and a.friend = b.tid);
该hql非常easy,就是两个表关联。然后输出到另外一个表中。是一个普通的common join,没有group by等操作。所以不存在map的数据倾斜问题
2、查看job日志
依据50030页面查看了一下该job的状态和日志信息,job的状态是被kill掉的,map任务还未执行完毕就被kill掉了,被kill掉的map任务执行时间都超过了10个小时。例如以下图所看到的:
依据1中得分析。该job从hql上面看是不存储数据倾斜的,那为什么会出现单个map执行时间超过10小时的情况呢,查看了一下被kill掉map任务的counter信息,例如以下:
居然单个map任务从hdfs上面读了10G的数据。不应该啊。难不成被处理的数据文件没被分片,单个map任务处理了单个的大文件。怀揣着这种推測,我去检查了一下hql里面两个表文件夹以下的文件,果不其然,以下全是lzo格式的文件,可是都没有建索引。并且
brand_ad_2hop_3表以下个别单个文件达到了10G+,应该就是这个原因了:lzo格式的文件没有建索引。数据文件不能被分片,导致在执行的时候,单个的文件仅仅能由一个map任务处理,假设单个文件非常大的情况下。map任务就会处理非常长时间。
在检查了一下brand_ad_2hop_3的建表语句,发现存储格式为Text。
既然找到了问题原因,下面就是解决的方法了:
(1)、给lzo文件建立索引
(2)、建表的时候请使用LZO存储格式
hive建表没使用LZO存储格式,可是数据是LZO格式时遇到的问题的更多相关文章
- [Hive_3] Hive 建表指定分隔符
0. 说明 Hive 建表示例及指定分隔符 1. Hive 建表 Demo 在 Hive 中输入以下命令创建表 user2 create table users2 (id int, name stri ...
- hive建表与数据的导入导出
建表: create EXTERNAL table tabtext(IMSI string,MDN string,MEID string,NAI string,DestinationIP string ...
- Oracle 自动生成hive建表语句
从 oracle 数据库导数到到 hive 大数据平台,需要按照大数据平台的数据规范,重新生成建表的 SQL 语句,方便其间,写了一个自动生成SQL的存储过程. ① 创建一张表,用来存储源表的结构,以 ...
- CDH集群部署hive建表中文乱码
背景:部署CDH集群的 hive 服务,选用 mysql 作为 hive 元数据的存储数据库,通过 hive cli 建表时发现中文注释均乱码. 现象:hive端建表中文注释乱码. 定位: 已经确认过 ...
- 利用MySQL原数据信息批量转换指定库数据表生成Hive建表语句
1.写出文件工具类 package ccc.utile; import java.io.*; /** * @author ccc * @version 1.0.0 * @ClassName Write ...
- Hive建表和内外部表的使用
原文链接: https://www.toutiao.com/i6766784274965201415 一.普通建表方式 create table stu_info( id int, name stri ...
- hive建表范例
建表范例:支持update和delete create table aaa( id string, visitor_name string ) clustered by(id) into bucket ...
- Hive - 建表和加载数据指令小结 以及使用Load data指令的注意事项
类似Mysql的数据库概念: hive> CREATE DATABASE cui; hive> USE cui; 创建表: CREATE TABLE test( first STRING, ...
- Apache Hive 建表操作的简单描述
客户端连接hive [root@bigdata-02 bin]# ./beeline Beeline version by Apache Hive beeline: Connecting : Ente ...
随机推荐
- tb连续aaaaa123aaa自适应
在连续的字符串数字中,td不会自适应大小,需要加上样式 style="word-break : break-all; overflow:hidden; " <table> ...
- oracle查询和编写数据字典
在项目交付时假设须要编写数据字典,能够採用以下的方法.首先执行以下的sql语句 SELECT A.TABLE_NAME AS 表名, A.COLUMN_NAME AS 字段名, DECODE(A.CH ...
- [Python]How to handle the exception in Python?
This post demonstrates how to use try clause to handle the exceptions def test_exception(case=None): ...
- UVa 12459 - Bees' ancestors
称号:区区女性有父亲和母亲,区区无人机只有一个母亲,我问一个单纯的无人机第一n随着祖先的数量. 分析:递归.Fib序列. 状态定义:建立f(k)和m(k)分别用于第一k雌蜂和雄蜂的数量: 递推关系:f ...
- 破解win2008r2服务器域用户名
启动PE系统 进入 cmd窗口 cd 进入 win2008r2服务器的安装盘(假设为d:) d: cd windows/system32 ren osk.exe osk02.exe #重命令屏幕键盘 ...
- android studio 怎样正确导入jar
近期又開始做android,使用android studio中遇到导入jar没有反应的问题,查了下资料实践攻克了,现特地写一下博客.希望对刚刚的使用的android studio的朋友有帮助. 1.先 ...
- lua-TestMore(转)
http://fperrad.github.io/lua-TestMore/ http://www.softpedia.com/get/Programming/Debuggers-Decompiler ...
- MongoDB:逐渐变得无关紧要
我与MongoDB的关系可分为三个阶段.对于目前处于第三阶段的我来说,这款产品似乎变得无关紧要了.很快你就会明白为什么我这么说. 阶段一:痴迷 我与MongoDB的第一次接触十分神奇:一个poligl ...
- poj 1466 Girls and Boys (最大独立集)
链接:poj 1466 题意:有n个学生,每一个学生都和一些人有关系,如今要你找出最大的人数.使得这些人之间没关系 思路:求最大独立集,最大独立集=点数-最大匹配数 分析:建图时应该是一边是男生的点, ...
- hdu2852--KiKi's K-Number(段树,求第一k的数量)
KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...