记因hive配置文件参数运用不当导致 sqoop MySQL导入数据到hive 失败的案例

news2024/10/10 6:13:24

sqoop MySQL导入数据到hive报错

ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 64

报错解释:
这个错误表明Sqoop在尝试导入数据到Hive时遇到了问题,导致Hive进程异常退出。状态码64是一个特殊的退出代码,它表明有一些基本的配置问题或者环境问题导致Hive无法正常启动。

24/06/25 13:07:56 INFO hive.HiveImport: OK
24/06/25 13:07:56 INFO hive.HiveImport: Time taken: 6.621 seconds
24/06/25 13:07:57 INFO hive.HiveImport: FAILED: NullPointerException null
24/06/25 13:07:58 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 64
	at org.apache.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:389)
	at org.apache.sqoop.hive.HiveImport.executeScript(HiveImport.java:339)
	at org.apache.sqoop.hive.HiveImport.importTable(HiveImport.java:240)
	at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:514)
	at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
	at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
	at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
	at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
	at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
	at org.apache.sqoop.Sqoop.main(Sqoop.java:236)

可见报错是因为hive.HiveImport: FAILED: NullPointerException null

查看hive的日志

cat $HIVE_HOME/logs/hive.log

2024-06-25T13:07:57,385  INFO [bfdcbd34-f72f-47c8-8abd-ec287b0cc884 main] ql.Driver: Returning Hive schema: Schema(fieldSchemas:null, properties:null)
2024-06-25T13:07:57,558 ERROR [bfdcbd34-f72f-47c8-8abd-ec287b0cc884 main] ql.Driver: FAILED: NullPointerException null
java.lang.NullPointerException
    at org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAccessController.getCurrentRoleNames(SQLStdHiveAccessController.java:194)
    at org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAccessControllerWrapper.getCurrentRoleNames(SQLStdHiveAccessControllerWrapper.java:155)
    at org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizationValidator.checkPrivileges(SQLStdHiveAuthorizationValidator.java:132)
    at org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizationValidator.checkPrivileges(SQLStdHiveAuthorizationValidator.java:84)
    at org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizerImpl.checkPrivileges(HiveAuthorizerImpl.java:87)
    at org.apache.hadoop.hive.ql.Driver.doAuthorizationV2(Driver.java:974)
    at org.apache.hadoop.hive.ql.Driver.doAuthorization(Driver.java:

由堆栈跟踪,可见是授权类错误

查看conf/hive-site.xml

<property>
  <name>hive.security.authorization.enabled</name>
  <value>true</value>
</property>
<property>
  <name>hive.server2.enable.doAs</name>
  <value>false</value>
</property>
<!-- 指定超级管理员 -->
<property>
  <name>hive.users.in.admin.role</name>
  <value>ljr</value>
</property>

<!-- 默认字符集 -->
<property>
    <name>default.character.set</name>
    <value>UTF-8</value>
</property>
<!-- 默认分隔符-->
<property>
    <name>hive.default.fileformat.magic.code</name>
    <value>\t</value>
</property>

<!-- 授权类-->
<property>
  <name>hive.security.authorization.manager</name>
  <value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory</value>
</property>
<property>
  <name>hive.security.authenticator.manager</name>
  <value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value>
</property>

发现配置了hive.security.authorization.manage和hive.security.authenticator.manager

hive.security.authorization.manager 和 hive.security.authenticator.manager 是 Hive 配置中与安全相关的两个重要参数。

1.hive.security.authorization.manager:

这个参数用于指定 Hive 的授权管理器。
授权管理器负责处理 Hive 中的权限检查,例如检查用户是否有权限执行某个查询或访问某个表1。
Hive 默认可能不提供具体的授权管理器实现,但你可以通过配置此参数来指定自定义的授权管理器类,该类需要实现 Hive 提供的授权接口。配置时,你可以hive.security.authorization.manager 设置为自定义的类名,并将相关的 JAR 包放入 Hive 的类路径下(如 $HIVE_HOME/lib/)。

2.hive.security.authenticator.manager:

这个参数用于指定 Hive 的身份验证管理器。身份验证管理器负责验证连接到 Hive 的用户的身份。
Hive 默认可能使用 Hadoop 的默认身份验证器(如 HadoopDefaultAuthenticator),但你也可以通过配置此参数来指定自定义的身份验证管理器类。当你需要在 Hive 中跟踪用户操作或实现更复杂的身份验证逻辑时,可能需要重写身份验证管理器

由于配置以上两个参数但是实际上并没有把自定义的hive.security.authorization.manager类放到lib目录下所以导致了NullPointerException null;

非必要指定授权管理器的话,注释掉以上两个参数,重启hive的相关服务;

重试导入

[ljr@node1 sqoop]$ sqoop import --connect jdbc:mysql://node1:3306/test?zeroDateTimeBehavior=CONVERT_TO_NULL --username root --password 1234 --table student2 --split-by id --num-mappers 1 --hive-import --fields-terminated-by ","  --hive-overwrite --hive-table test.student --null-non-string '\\N' --null-string '\\N'
 

24/06/25 14:20:08 INFO hive.HiveImport: Loading uploaded data into Hive
24/06/25 14:20:23 INFO hive.HiveImport: SLF4J: Class path contains multiple SLF4J bindings.
24/06/25 14:20:23 INFO hive.HiveImport: SLF4J: Found binding in [jar:file:/export/server/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
24/06/25 14:20:23 INFO hive.HiveImport: SLF4J: Found binding in [jar:file:/export/server/hbase/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
24/06/25 14:20:23 INFO hive.HiveImport: SLF4J: Found binding in [jar:file:/export/server/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
24/06/25 14:20:23 INFO hive.HiveImport: SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
24/06/25 14:20:23 INFO hive.HiveImport: SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
24/06/25 14:20:29 INFO hive.HiveImport: 
24/06/25 14:20:29 INFO hive.HiveImport: Logging initialized using configuration in file:/export/server/hive/conf/hive-log4j2.properties Async: true
24/06/25 14:20:37 INFO hive.HiveImport: OK
24/06/25 14:20:37 INFO hive.HiveImport: Time taken: 5.598 seconds
24/06/25 14:20:39 INFO hive.HiveImport: Loading data to table test.student
24/06/25 14:20:39 INFO hive.HiveImport: Moved: 'hdfs://node1:8020/user/hive/warehouse/test.db/student/part-m-00000' to trash at: hdfs://node1:8020/user/ljr/.Trash/Current
24/06/25 14:20:45 INFO hive.HiveImport: OK
24/06/25 14:20:45 INFO hive.HiveImport: Time taken: 7.687 seconds
24/06/25 14:20:45 INFO hive.HiveImport: Hive import complete.

可见import complete

查看目标表student

数据导入成功。

以上案例可说明,正确的文件配置对环境的正常运行起着至关重要的作用,在写入配置参数时要充分了解参数的作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1862994.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】--顺序表

&#x1f47b;个人主页: 起名字真南 &#x1f47e;个人专栏: [数据结构初阶] [C语言] 目录 1 线性表2 顺序表2.1 概念和结构2.2 顺序表的实现2.2.1 头文件的定义2.2.2 初始化2.2.3 检查空间大小2.2.4 尾插2.2.5 打印2.2.6 头插2.2.7 查找指定数据2.2.8 头删2.2.9 尾删 2倍 1 线…

浏览器扩展V3开发系列之 chrome.contextMenus 右键菜单的用法和案例

【作者主页】&#xff1a;小鱼神1024 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 chrome.contextMenus 允许开发者向浏览器的右键菜单添加自定义项。 在使用 chrome.contextMenus 之前…

基于 Redis 实现秒杀资格判断,提升并发性能

在互联网电商平台上&#xff0c;秒杀活动往往会吸引大量用户同时抢购&#xff0c;如何高效地处理高并发请求&#xff0c;保证用户体验&#xff0c;是一个重要的技术挑战。本文将介绍如何基于 Redis 实现秒杀资格的判断&#xff0c;提高并发性能。 基本思路 秒杀活动的核心流程…

SpringBoot整合MongoDB JPA使用

一、整合MongoDB SpringDataMongoDB是 SpringData家族成员之一&#xff0c;MongoDB的持久层框架&#xff0c;底层封装了 mongodb-driver。mongodb-driver 是 MongoDB官方推出的 Java连接 MongoDB的驱动包&#xff0c;相当于JDBC驱动。 SpringBoot整合 MongoDB&#xff0c;引入…

MySQL数据库—MHA高可用配置及故障切换

目录 一、MHA概述 1.什么是 MHA 2.MHA 的组成 &#xff08;1&#xff09;MHA Node&#xff08;数据节点&#xff09; &#xff08;2&#xff09;MHA Manager&#xff08;管理节点&#xff09; (3)MHA 的特点 二、MHA的一主两从部署 实验设计 实验具体操作 1.配置主…

一次breach1靶机的渗透测试

1.端口扫描和信息收集 2.CMS后台信息收集 3.解密HTTPS流量 4.tomcat的后台利用 5.提权 1.端口扫描和信息收集&#xff1a; 首先进行主机发现&#xff0c;找到目标机器&#xff1a; nmap -sP 192.168.110.1/24 找到目标机器&#xff0c;进行端口扫描&#xff1a; nmap -T4 …

CS144 Lab3 TCPSender复盘

一.基础概念 1.TCPSender在TCPSocket中的地位与作用 Lab0中实现了基于内存模拟的流控制-字节流&#xff08;ByteStream&#xff09;&#xff0c;底层使用std::deque实现&#xff0c;根据最大容量Capacity进行容量控制。个人理解它相当于应用层的输入输出缓存区&#xff0c;用户…

【opencv - C++ - Ubuntu】putText 显示中文最快方法

话不多说&#xff0c;直接上代码 #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/freetype.hpp>using namespace std; using namespace cv;int main(void) {Mat image(1000, 1800, CV_8UC3, Scalar(200,162,33));Ptr<freetype::F…

如何找到合适的Python第三方库?

找合适的Python库其实很简单&#xff0c;按照以下三步法&#xff0c;你能找到90%的Python库。 1、百度谷歌搜索 明确自己的需求&#xff0c;用Python来干什么&#xff0c;力求简短明了。比如定位“数据分析”&#xff0c;然后去搜索关键词【Python数据分析第三方库】&#xf…

【嵌入式Linux】i.MX6ULL 外部中断服务函数的初始化

文章目录 1. Cortex-A7 中断系统1.1 分析1.2 具体处理流程 2. 外部中断服务函数的初始化2.1 基本流程分析2.2 具体代码分析2.2.1. 定义中断处理类型和结构体2.2.2. 初始化中断系统2.2.3. 注册中断处理函数2.2.4. 具体的中断处理逻辑2.2.5. 默认的中断处理函数 3. 完整代码 本文…

django学习入门系列之第三点《案例 小米商城二级菜单》

文章目录 样例划分区域搭建骨架logo区域完整代码 小结往期回顾 样例 划分区域 搭建骨架 <!-- 二级菜单部分 --> <div class"sub-header"><div class"container"><div class"logo">1</div><div class"sea…

[word] Word表格怎么填充序列号? #微信#微信#笔记

Word表格怎么填充序列号&#xff1f; Word表格怎么填充序列号&#xff1f;在Excel中填充序列号是很轻松的事情&#xff0c;在Word表格中填充序列号就没那么简单&#xff0c;但是还是有小技巧&#xff0c;可以实现Word表格序号填充&#xff0c;还能自动更新。 1、插入序号 先…

JAVAEE之网络原理_传输控制协议(TCP)的滑动窗口、流量控制、拥塞控制、延迟应答、捎带应答机制

前言 在前面几节&#xff0c;我们讲解了TCP协议的基本概念、报文格式。还介绍了确认应答机制、超时重传、连接管理机制&#xff0c;在本节中 我们将会继续介绍TCP协议的其他机制。 一、滑动窗口机制&#xff08;效率机制&#xff09; 在前面的章节中我们讨论了确认应答策略&…

C++ ─── vector的实现

知识点&#xff1a; ① 因为vector是模版&#xff0c;所以声明和定义都放在.h中&#xff0c;防止出现编译错误 .h不会被编译&#xff0c;在预处理中.h在.cpp中展开所以在编译时只有.cpp 而 .cpp顺序编译&#xff0c;只会进行向上查找&#xff0c;因此至少有函数的声明。 ②memc…

【Linux】进程 | 控制块pcb | task_struct | 创建子进程fork

目录 Ⅰ. 进程的概念&#xff08;Process&#xff09; 1. 什么是进程&#xff1f; 2. 多进程管理 3. 进程控制块&#xff08;PCB&#xff09; task_struct 的结构 Ⅱ. 进程查看与管理 1. 使用指令查看进程 2. /proc 查看进程信息 3. 获取进程 ID 4. 创建子进程 原因…

在Ubuntu22.04 使用stable-diffusion-webui 秋叶整合包

背景 众所周知&#xff0c;赛博菩萨已经发布了windows下的整合包&#xff0c;开箱即用&#xff0c;且集成度较高。 那我为啥非要在Ubuntu下使用呢&#xff1f; 当然是因为主力机就是Ubuntu系统啦。而且涉及到sd webui API 的调用&#xff0c;在Ubuntu 下调试更加方便一点。 那…

PG实践|内置函数之GENERATE_SERIES之深入理解

&#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端工程师 &#x1f3c6; 近期荣誉&#xff1a;华为云云享专家、阿里云专家博主、腾讯云优秀创作者、ACDU成员 &#x1f525; 三连支持&#xff1a;欢迎 ❤️关注…

2024年第十五届蓝桥杯青少组大赛8月24日开启

据蓝桥杯青少组官网显示&#xff0c;2024年第十五届蓝桥杯青少组大赛8月24日开启。 蓝桥杯青少组历届题库地址&#xff1a;http://www.6547.cn/question/cat/2 蓝桥杯青少组历届真题下载&#xff1a;http://www.6547.cn/wenku/list/10

【神经网络】CNN网络:深入理解卷积神经网络

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&#xff01; CNN网络&#xff1a;深入理解…

VideoLLaMA 2:多模态视频理解新突破,音频理解能力再升级,挑战 GPT-4V

前言 近年来&#xff0c;人工智能技术飞速发展&#xff0c;尤其是大模型的出现&#xff0c;为视频理解和生成领域带来了前所未有的机遇。然而&#xff0c;现有的视频大模型&#xff08;Video-LLM&#xff09;在处理视频中复杂的时空信息和音频信息方面仍存在不足&#xff0c;例…