今天微博大数据平台发邮件来说。他们有一个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. Java的Log系统介绍和切换(转)

    Java的log系统比较繁杂.在这里梳理一下.本文只涉及log系统介绍和处理log系统之间的切换.不涉及如何配置和使用. 具体的log系统 Log4j:准确的说是log4j 1.x版.是之前使用最广泛 ...

  2. Excel阅读器NPOI

    什么是NPOI? NPOI 它是 POI 项目的 .NET 版本号. POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就能够在没有安装 Office ...

  3. Android规范发展

    一.Android 编码规范 1.java 代码中不出现中文.最多凝视中能够出现中文 2.局部变量命名.静态成员变量命名 仅仅能包括字母,单词首字母出第一个外,都为大写,其它字母都为小写 3.常量命名 ...

  4. 【转】Android Web Server

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://vaero.blog.51cto.com/4350852/1188602 Andr ...

  5. 【原创】leetCodeOj --- Sort List 解题报告

    今日leetcode链表题全制霸 原题地址: https://oj.leetcode.com/problems/sort-list/ 题目内容: Sort List Sort a linked lis ...

  6. table 谷歌下不出现滚动条

    <table> </table> <style> table {overflow-y:scroll;max-height:152px; height:auto;} ...

  7. 重写onBackPressed方法

    android手机back按键响应方法重构: long exitTime = System.currentTimeMillis() - 2000; public void onBackPressed( ...

  8. Directx11学习笔记【十四】 使用最新的Effect框架和SDK

    由于之前一直在看directx11龙书学习,因此sdk一直用的Microsoft DirectX SDK (June 2010) 版本,最近在stackoverflow上问dx11相关问题时,一直被大 ...

  9. partial 的好处

    1.可以将一个类中的属 性, 方法分类来写 2.方法了可以写在多个类中, 这样可以对方法进行分类   由于项目上使用了代码生成工具, 自定义的一些按钮事件默认是不生成的,得自己定义,如果把定义的代码写 ...

  10. MATLAB描绘极坐标图像——polar

    polar可用于描绘极坐标图像. 最简单而经常使用的命令格式:POLAR(THETA, RHO)  当中,THETA是用弧度制表示的角度,RHO是相应的半径. 例: a=-2*pi:.001:2*pi ...