Hive on Tez 出现的bug 及原因解析

现象描述

在使用Tez引擎查询时,发现一个bug:

  

SELECT
         t1.*,t2.activity_id,t3.timeMap
     from
         (select * from ods_order_info where dt=‘2020-03-29‘) t1  --单独查询结果为7条
             left join
         (select order_id,activity_id  from ods_activity_order where dt=‘2020-03-29‘) t2  --t1 与t2 left join ,结果为7条
         on t1.id=t2.order_id
             join
         (select order_id,str_to_map(concat_ws(‘,‘,collect_set(concat(order_status,‘=‘,operate_time))),‘,‘,‘=‘) timeMap
          from ods_order_status_log where dt=‘2020-03-29‘
          group by order_id) t3  --单独查询是跟t1主键相同的7条
         on t3.order_id=t1.id

讲道理此SQL查询出的结果应该是7条,但是结果确是4条

而利用MR引擎查询出来的结果是正确的7条

set hive.execution.engine=mr;

原因分析

这是因为Tez和MR一样,都默认开启了mapjoin,这里面涉及到了几个参数

-- 是否自动开启mapjoin,默认为true
set hive.auto.convert.join=true;

-- mapjoin小表和大表的阈值设置
set hive.mapjoin.smalltable.filesize=25000000;

-- 多个mapjoin 转换为1个时,限制输入的最大的数据量 影响tez,默认10m
set hive.auto.convert.join.noconditionaltask.size =10000000;

当表的数据大于10m时,tez会把多余的那部分数据截掉,这样就会造成丢数据

解决方法

1.

hive.mapjoin.smalltable.filesize和hive.mapjoin.smalltable.filesize一致或者更大,一般扩大10倍是不会有问题的 保证小表中所有的数据,都可以参与计算。

2.

关闭map join

原文地址:https://www.cnblogs.com/yangxusun9/p/12675606.html

时间: 2024-12-13 13:52:56

Hive on Tez 出现的bug 及原因解析的相关文章

hive on tez 错误记录

1.执行过程失败,报 Container killed on request. Exit code is 143 如下图: 分析:造成这种原因是由于总内存不多,而容器在jvm中占比过高,修改tez-site.xml文件,添加如下配置: <property> <name>tez.container.max.java.heap.fraction</name> <value>0.2</value> #调低内存占比,默认是0.8(也就是80%) <

HIVE 0.11版本的bug

HIVE 0.11版本的bug 两次{{group by}}的bug  https://issues.apache.org/jira/browse/HIVE-5149 SELECT key, COUNT(*) FROM ( SELECT key, value, COUNT( * ) FROM src GROUP BY key, value ) a GROUP BY key; 特点是两次 group by ,外层字段少于内层,2次集合函数.可以把中间的查询做成临时表回避这个bug HIVE 0.1

关于&#39;-[UIViewController _loadViewFromNibNamed:bundle:] loaded the &quot;XXXView&quot; nib but the view outlet was not set.&#39;这个bug的原因

此种bug分为两种情况: 一:当你这个控制器的view是通过xib加载的,但是在xib里面并没有绑定file's Owner,或者绑定了file's Owner,但是没用对file's Owner里面的view属性进行连线 解决情况:第一步: : 第二步: 二:第二种出bug的原因可能很多人都会忽略,当你的控制器的文件名称跟你用xib描述的一个view的名称很像,就是少了一个controller,此时也会在运行的时候崩掉 例如 : 首先来分析:PPVideoViewController并没用用x

hive on tez踩坑记2-hive0.14 on tez

在测试hive0.14.0 on tez时遇到的问题比较多:1.在使用cdh5.2.0+hive0.14.0+tez-0.5.0测试时,首先遇到下面的问题 java.lang.NoSuchMethodError: org.apache.tez.dag.api.client.Progress.getFailedTaskAttemptCount()I         at org.apache.hadoop.hive.ql.exec.tez.TezJobMonitor.printStatusInPl

hive on tez踩坑记1-hive0.13 on tez

最近集群准备升级到cdh5.2.0,并使用tez,在测试集群cdh5.2.0已经稳定运行了很长时间,因此开始折腾hive on tez了,期间遇到不少问题,这里记录下. hive on tez的部署比较简单,可以参考wiki.主要注意几个地方 1.编译的时候 mvn clean package -Dtar -DskipTests=true -Dmaven.javadoc.skip=true 2.需要将tez相关的包upload到hdfs中,并设置tez-site.xml   <property>

hive on tez配置

1.Tez简介 Tez是Hontonworks开源的支持DAG作业的计算框架,它可以将多个有依赖的作业转换为一个作业从而大幅提升MapReduce作业的性能.Tez并不直接面向最终用户--事实上它允许开发者为最终用户构建性能更快.扩展性更好的应用程序 2.编译tez 本文记录Tez 0.8.5的编译过程,之前的Tez版本都是源码包,最新的版本虽然提供了编译后的tar包,但是大部分情况下是针对特定的Hadoop版本,如果和我们的Hadoop版本不一致,可能某个时刻会出现一些未知的问题,所以为了稳定

配置 Hive On Tez

配置 Hive On Tez 标签(空格分隔): hive Tez 部署底层应用 简单介绍 介绍:tez 是基于hive 之上,可以将sql翻译解析成DAG计算的引擎.基于DAG 与mr 架构本身的优缺点,tez 本身经过测试一般小任务在hive mr 的2-3倍速度左右,大任务7-10倍左右,根据情况不同可能不一样. 对于 Tez-0.9.0 以及更高版本, Tez 需要 Apache Hadoop 版本为 2.7.0 或更高 安装 Apache Hadoop 2.7.0 或更高版本,这里选取

hive on tez

hive运行模式 hive on mapreduce 离线计算(默认) hive on tez  YARN之上支持DAG作业的计算框架 hive on spark 内存计算 hive on tez Tez是一个构建于YARN之上的支持复杂的DAG任务的数据处理框架.它由Hontonworks开源,它把mapreduce的过程拆分成若干个子过程,同时可以把多个mapreduce任务组合成一个较大的DAG任务,减少了mapreduce之间的文件存储,同时合理组合其子过程从而大幅提升MapReduce

史上最全网站降权原因解析

在互联网时代飞速发展的前景下加上昂贵的竞价费用让多数企业苦不堪言于是低成本投入的职业-seo就诞生了,从业人数也每年呈递增状态,然而互联网的垃圾信息也越来越多,于是搜索引擎为了更好的迎合用户体验也频繁的展开了各项算法调整.在这期间当然也有很多网站被降权甚至被K掉,至于什么原因,有很多从职朋友还不能彻底的找到问题的根源,下面笔者以个人多年经验为大家展开一下分享,希望能帮助你早日恢复网站排名. 直接进入正题: 一.空间问题 因为空间访问速度不稳定,有时慢有时打不开的情况,因这个被降权的案列也是很多的