今天微博大数据平台发邮件来说。他们有一个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格式时遇到的问题的更多相关文章

  1. [Hive_3] Hive 建表指定分隔符

    0. 说明 Hive 建表示例及指定分隔符 1. Hive 建表 Demo 在 Hive 中输入以下命令创建表 user2 create table users2 (id int, name stri ...

  2. hive建表与数据的导入导出

    建表: create EXTERNAL table tabtext(IMSI string,MDN string,MEID string,NAI string,DestinationIP string ...

  3. Oracle 自动生成hive建表语句

    从 oracle 数据库导数到到 hive 大数据平台,需要按照大数据平台的数据规范,重新生成建表的 SQL 语句,方便其间,写了一个自动生成SQL的存储过程. ① 创建一张表,用来存储源表的结构,以 ...

  4. CDH集群部署hive建表中文乱码

    背景:部署CDH集群的 hive 服务,选用 mysql 作为 hive 元数据的存储数据库,通过 hive cli 建表时发现中文注释均乱码. 现象:hive端建表中文注释乱码. 定位: 已经确认过 ...

  5. 利用MySQL原数据信息批量转换指定库数据表生成Hive建表语句

    1.写出文件工具类 package ccc.utile; import java.io.*; /** * @author ccc * @version 1.0.0 * @ClassName Write ...

  6. Hive建表和内外部表的使用

    原文链接: https://www.toutiao.com/i6766784274965201415 一.普通建表方式 create table stu_info( id int, name stri ...

  7. hive建表范例

    建表范例:支持update和delete create table aaa( id string, visitor_name string ) clustered by(id) into bucket ...

  8. Hive - 建表和加载数据指令小结 以及使用Load data指令的注意事项

    类似Mysql的数据库概念: hive> CREATE DATABASE cui; hive> USE cui; 创建表: CREATE TABLE test( first STRING, ...

  9. Apache Hive 建表操作的简单描述

    客户端连接hive [root@bigdata-02 bin]# ./beeline Beeline version by Apache Hive beeline: Connecting : Ente ...

随机推荐

  1. spring html5 拖拽上传多文件

    注:这仅仅是一个粗略笔记.有些代码可能没用.兴许会再更新一个能够使用的版本号.不足之处,敬请见谅. 1.spring环境搭建,这里使用的是spring3的jar,须要同一时候引入common-IO 和 ...

  2. 牟大哥:《App自我促销》连载2 直立人迁移走

    [谋哥每天一干货,第六十九篇] 前篇说到声音在远古时代.是一个奇妙的东西,它可以非常快地把信息传播到其它地方,突破了短距离. 然而能人的后代直立人学会了直立行走,他们開始走出非洲,到达遥远的中东.中国 ...

  3. sublime配置攻略

    大家好,今天给大家分享的编辑器:sublime text2     我用过非常多编辑器, EditPlus.EmEditor.Notepad++.Notepad2.UltraEdit.Editra.V ...

  4. Xamarin.Android 入门实例(3)之呼叫电话号码

    1.Main.axml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...

  5. 位图像素的颜色 携程编程大赛hdu

    位图像素的颜色 Time Limit: 2000/1000 MS (Java/Others)    MemoryLimit: 32768/32768 K (Java/Others) Total Sub ...

  6. 实验数据结构——KMP算法Test.ming

    翻译计划     小明初学者C++,它确定了四个算术.关系运算符.逻辑运算.颂值操作.输入输出.使用简单的选择和循环结构.但他的英语不是很好,记住太多的保留字,他利用汉语拼音的保留字,小屋C++,发明 ...

  7. WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法

    原文:WMI 获取硬件信息的封装函数与获取联想台式机的出厂编号方法 今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都是可以提取出来的,就自己把那些公共部分提出出来,以后如果要获取 某部分的 ...

  8. 深入解析_Android的自定义布局

    前言: 这篇文章是前Firefox Android工程师(现在跳槽去Facebook了) Lucas Rocha所写,文中对Android中常用的四种自定义布局方案进行了很好地分析,并结合这四种And ...

  9. 【JUnit4.10来源分析】6 Runner

    org.junit.runner.Runner它是JUnit作业引擎.它在许多类型的支持下的.处理试验和生产(Description).Failure和Result和其它输出. Runner参见图主类 ...

  10. unity调用安卓打包apk时的错误unable to convert classes into dex format

    出现这种问题一般是由于有重复的文件所致,看下unity报的错误那些文件重复了,把重复的文件删了即可 例如,将eclipse中的安卓工程bin\class导出jar包时,会将下面的.class文件打包, ...