Hive常见报错与解决方案

这篇具有很好参考价值的文章主要介绍了Hive常见报错与解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

公司近期上火山云,hive、hadoop、tez等都有较大的版本升级,继而引发了 一系列的报错。现将遇到的报错内容以及相应解决方法列出来,供大家参考。

关于版本:
组件 升级前 升级后
Hive 1.2 2.3
Hadoop 2.6 2.10
Tez 0.7 0.10

常见报错

1.hive中无法执行HDFS命令,查看目录属性等

Hive常见报错与解决方案,hive,hadoop,数据仓库

原因:

开源的2.3版本 hive不支持直接dfs这种命令

解决方案:

将命令替换为:

hive> !hdfs fs -ls /ods/table_location;

加!可以将命令转为shell执行

2.同一字段在两张表中类型分别为int 和string,不支持union all

FAILED: SemanticException Schema of both sides of union should match: Column c1 is of type int on first table and type string on second table.

原因:

新版版校验更加严格,要cast为同一种类型后才能union在一起

解决方案:

统一字段类型,cast( as string) 或者 cast( as int)

3.不支持连续的 0< a<25

原因:

版本不兼容,这个是社区低版本的bug,高版本已不允许这样来使用

解决方案:

拆分为:a>0 and a<25

4.FAILED: SemanticException [Error 10305]: CREATE-TABLE-AS-SELECT creates a VOID type, please use CAST to specify the type, near field: ins_choose_date

Hive常见报错与解决方案,hive,hadoop,数据仓库

原因:

建表时必须要交代null的类型
Hive常见报错与解决方案,hive,hadoop,数据仓库

解决方案:

建表时 null 给个默认类型

5.row 、order不支持作为字段别名

原因:

row、order是关键字,作为别名不能使用,在低版本中允许该语法,版本兼容性问题

解决方案:](https://img-blog.csdnimg.cn/direct/9a4266b507834870b8e8eaad1bf9701e.png)

换个别名,同时要考虑下游的使用情况。

6.translate 不支持date类型参数

原因:

translate入参不支持日期类型(timestamp)
Hive常见报错与解决方案,hive,hadoop,数据仓库

解决方案:

改类型

7.concat_ws不兼容date类型参数

Argument 2 of function CONCAT_WS must be “string or array”, but “array” was found

原因:

和6一样,都是版本差异
Hive常见报错与解决方案,hive,hadoop,数据仓库

7.usage: 5.0 GB of 4 GB physical memory used; 6.5 GB of 8.4 GB virtual memory used. Killing container.

原因:

container内存不足,需要扩大container内存,当前是默认1核4G

解决方案:

单个任务

set hive.tez.container.size =6144;

8. Caused by: java.io.IOException: Not a file: hdfs://emr-cluster/ods/ods_dd/2

原因:

ods_dd表下的数据确实有1子目录,需要确认数据来源

解决方案:
set mapreduce.input.fileinputformat.input.dir.recursive=true;

9. tez执行多一层目录 /1 /2…

原因:
  1. 所有的union all 都会产生1和2这种子目录
  2. 只要满足merge File的条件(这里逻辑很复杂,主要一个是merge的阈值)都会都会merge,merge了之后就不会有子目录
  3. 如果union all里只有一个表有数据,那么只会产生一个子目录(即只有1或者2),这样的情况下不会merge
解决方案:

先写入临时表,在将临时表插入正式表

10.Caused by: java.lang.ArrayIndexOutOfBoundsException: 1

Hive常见报错与解决方案,hive,hadoop,数据仓库

原因:

据本身的问题,存在这么一种情况,全部字段只有一个有值,另外全部为null,这个建议看看hdfs文件

解决方案:

1.替换执行引擎为TEZ
2. set hive.auto.convert.sortmerge.join =false;

11.动态分区load 多partition数据失败

Hive常见报错与解决方案,hive,hadoop,数据仓库

原因:

元数据库字段字符集类型不对

解决方案:
--notification_log 表 MESSAGE 字段需要 改为 utf-8 编码
mysql> alter table  notification_log modify MESSAGE  longtext CHARACTER SET utf8 COLLATE utf8_general_ci;

12.Hive on tez和mr执行同一张表多次join结果不一致

此现象发生在a join a 的时候,且a是orc表。

原因:

总结了以下特征,是会必现上述结果:
1.同一脚本内(即多次查询在同一个Application内),对于一个orc格式的表,多次查询,条件不同
2.开启了run time filter
3.开启了orc push down
4.有inner join情况
5.run time filter作用的是orc表

解决方案:

建议切换hive on Tez引擎来处理。
如果不可切换tez引擎,建议修改参数 hive.optimize.index.filter=false,对执行性能有一定的影响,慎重修改。参数 hive.optimize.index.filter=false 可以避免将 TableScan 的 Filter 下推文章来源地址https://www.toymoban.com/news/detail-791964.html

到了这里,关于Hive常见报错与解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第十六章 Hive生产环境优化&数据倾斜解决方案

    Hive调优作用:在保证业务结果不变的前提下,降低资源的使用量,减少任务的执行时间。 1、调优须知 (1)对于大数据计算引擎来说:数据量大不是问题, 数据倾斜是个问题。 (2)Hive的复 杂HQL底层会转换成多个MapReduce Job并行或者串行执行 ,Job数比较多的作业运行效 率相

    2024年02月12日
    浏览(42)
  • 基于MapReduce的Hive数据倾斜场景以及解决方案

    通常认为当所有的map task全部完成,并且99%的reduce task完成,只剩下一个或者少数几个reduce task一直在执行,这种情况下一般都是发生了数据倾斜。 即为在整个计算过程中,大量相同的key被分配到了同一个reduce任务上造成。Hive的数据倾斜本质上是MapReduce计算引擎的数据倾斜,

    2024年02月13日
    浏览(53)
  • 关于hive3多表leftjoin导致数据丢失问题及解决方案

    最近业务场景需要将一张大表通过name名字关联多个小表去获取他们的id,大表数据9000w,小表数据最大180w,最小30w,我以主表leftjoin的时候发现了数据丢失问题 代码如下  结果显示数据我t7的数据由180w剩下9w,发生了严重的数据丢失,在别的表也有不同程度的丢失问题. 最后发现这个问

    2024年02月15日
    浏览(53)
  • Hive无法启动的解决方案

    关掉虚拟机后,重新启动后,按照Hadoop和Hive的流程重新启动,发现无法启动成功,特别是元数据服务无法启动,出现以下错误: Exception in thread “main” java.lang.RuntimeException: java.net.ConnectException: Call From hadoop-master/192.168.19.137 to hadoop-master:9000 failed on connection exception: java.net.Conn

    2024年02月12日
    浏览(38)
  • Hive表锁机制原理以及各种场景的解决方案

    hive 锁机制(S锁,X锁) 是由hive的事务管理器出发,锁的原理是 一张表简称A表,我们对A表做查询操作的时候,就会获取到 A表的S锁(共享锁), 如果对A表做alter 等其他操作就会获取A表的X锁(排他锁) 如果A表同时拥有S锁和X锁,A表就会死锁。死锁后的现象就是做drop truncate 等操作会

    2024年02月02日
    浏览(34)
  • hive分位函数percentile和percentile_approx误区和解决方案

    percentile和percentile_approx对分位数的计算是不同的!!! 拿中位数来说, percentile(col, 0.5),结果和正常理解的中位数相同,即col排序后最中间的一个数(col观察数为奇数时)或者最中间两个数的平均数(col观察数为偶数时)为中位数; percentile_approx(col, 0.5),则是按照 等频划分

    2024年02月05日
    浏览(41)
  • Android HAL深入探索(5): 调试HAL报错与解决方案

    在我们学习Android HAL开发时,可能会遇到一些编译或运行时的错误,这些错误可能会影响探索脚本。为了有效地定位和解决这些错误,需要了解Android HAL的架构、工具和方法。本文将介绍一些我自己在学习Android HAL的调试技巧和常见错误的解决方案,希望能帮助到大家。 网上其

    2024年01月24日
    浏览(43)
  • Postman常见报错与解决方法,持续更新~

    postman中文文档 如果 Postman 无法发送你的请求,或者如果它没有收到你发送请求的 API 的响应,你将收到一条错误消息。此消息将包含问题概述和指向控制台的链接,你可以在其中访问有关请求的详细信息。 选择“在控制台中查看”以检查控制台中的请求详细信息,并了解有

    2024年02月05日
    浏览(40)
  • 安卓开发——Android Studio常见报错与解决方法

    这个错误是由于较新版本的NDK的./toolchains目录中没有arm-linux-androideabi文件,解决办法是从旧的NDK版本里面把相关的lib复制到要使用的NDK的版本里面,重新编译运行。 打开Andrid SDK配置界面: 下载旧版本的NDK(NDK 21是包含了需要的LIB,新测可行) 然后打开SDK所在的目录: 把NDK

    2024年02月05日
    浏览(44)
  • HIVE 3 使用 MR 引擎多表关联 (JOIN) 导致丢数的问题复现、问题根源及解决方案 (附代码)

    本文意图解决 HIVE 3 版本中使用 MR 作为运算引擎进行 JOIN 操作时导致的丢数情况。 Apache Hive 在 2.3 版本后宣布放弃维护 MapReduce 作为底层执行引擎,并转而使用 Tez 作为默认的查询引擎。但是由于 Tez 在大作业量和高并发时的严重性能问题,导致许多任务不得不继续使用 MapRe

    2024年02月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包