Windows下 IDEA编译调试 hive2.3.9

news2025/7/16 22:06:40

Windows下 IDEA编译调试 hive2.3.9

环境

  • IDEA 2021.2

  • JDK1.8(试过用高版本的JDK17编译,不兼容编译不过)

  • 一个Hadoop集群,涉及配置文件core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml

  • Windows环境中配置hadoop客户端。

  • git

源码编译

在Git Bash中执行编译命令,hive2版本的编译命令 mvn clean package -DskipTests -Pdist

编译结果图
在这里插入图片描述

编译问题

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8:run (generate-version-annotation) on project hive-standalone-metastore-common: An Ant BuildException has occured: exec returned: 127
[ERROR] around Ant part ...<exec failonerror="true" executable="bash">... @ 4:46 in F:\subsys\mystudy\hive-2\hive\standalone-metastore\metastore-common\target\antrun\build-main.xml
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :hive-standalone-metastore-common

编译命令需要在shell环境下执行,,所以采用git bash环境编译。

导入IDEA

用IDEA打开项目

问题

Could not find artifact org.apache.directory.client.ldap:ldap-client-api:pom:0.1-SNAPSHOT 

原因是:丢失了依赖 解决方案:查看社区,发现存在一个issue。issue号是HIVE-21777。在hive service 模块下的pom.xml文件排掉这个依赖项

        <dependency>
            <groupId>org.apache.directory.server</groupId>
            <artifactId>apacheds-server-integ</artifactId>
            <version>${apache-directory-server.version}</version>
            <scope>test</scope>
            <!-- 增加的部分-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.directory.client.ldap</groupId>
                    <artifactId>ldap-client-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

启动Cli

  1. 分别把集群的配置文件copy到hive-cli模块的resources(需要自己新建和配置)下core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml,新建hive-log4j2.propertieshive-site.xml文件。

  2. 变更配置项

    mapred-site.xml中新增,

        <!-- 支持跨平台提交任务 -->
        <property>
            <name>mapreduce.app-submission.cross-platform</name>
            <value>true</value>
        </property>
    

    hive-site.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    
        <property>
            <name>hive.cli.print.current.db</name>
            <value>true</value>
        </property>
    
        <property>
            <name>hive.cli.print.header</name>
            <value>true</value>
        </property>
    
        <!-- hive 元数据链接地址 HA-->
        <property>
            <name>hive.metastore.uris</name>
            <value>thrift://192.168.1.1:9083,thrift://192.168.1.2:9083</value>
            <final>true</final>
        </property>
    
        <property>
            <name>hive.cluster.delegation.token.store.class</name>
            <value>org.apache.hadoop.hive.thrift.MemoryTokenStore</value>
            <description>Hive defaults to MemoryTokenStore, or ZooKeeperTokenStore</description>
        </property>
    
        <!-- 测试环境的 hive客户端本地模式-->
        <property>
            <name>hive.exec.mode.local.auto</name>
            <value>true</value>
        </property>
    
        <!--输入最大数据量,默认128MB-->
        <property>
            <name>hive.exec.mode.local.auto.inputbytes.max</name>
            <value>134217728</value>
        </property>
    
        <!--    最大任务数-->
        <property>
            <name>hive.exec.mode.local.auto.input.files.max</name>
            <value>10</value>
        </property>
    </configuration>
    

    hive-log4j2.properties变更

    property.hive.log.dir = /opt/hive/logs
    property.hive.log.file = hive-${sys:user.name}.log
    
  3. 修改hive-cli模块中的pom文件,将commons-io,和disruptor范围取消test限制。

  4. 配置CliDriver启动,JVM参数-Djline.WindowsTerminal.directConsole=false,环境配置,HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native;HADOOP_OPTS=-Djava.library.path=$HADOOP_HOME/lib

    在这里插入图片描述

问题:import org.apache.hive.tmpl.QueryProfileTmpl 缺失

解决 在git bash执行mvn generate-sources ,然后拷贝hive service模块目录target/generated-jamon/org/apache/hive/tmpl生成的源文件至指定目录(需要手动创建),QueryProfileTmplQueryProfileTmplImpl

本地模式下进行基础操作

建库

create database testdb;

建表

create table test001(id int,dummy string) stored as orc;

插入数据

use testdb;
insert into table testdb.test001 values(1,"X");

查询数据

select * from test001;

删除数据,不建议进行单行或者多行的条件式删除,可以进行分区或整表的删除,重新写入数据的方式。

执行记录:

hive (default)> create database testdb;
create database testdb;
OK
Time taken: 0.072 seconds
hive (default)> use testdb;
use testdb;
OK
Time taken: 0.045 seconds
hive (testdb)> create table test001(id int,dummy string) stored as orc;
create table test001(id int,dummy string) stored as orc;
OK
Time taken: 0.53 seconds
hive (testdb)> insert into table test001 values(1,"X");
insert into table test001 values(1,"X");
Automatically selecting local only mode for query
WARNING: Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Query ID = 19057578_20230222162806_f6ce7921-08d3-41db-8408-dfd18339e594
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there's no reduce operator
Job running in-process (local Hadoop)
2023-02-22 16:28:13,266 Stage-1 map = 0%,  reduce = 0%
2023-02-22 16:28:14,295 Stage-1 map = 100%,  reduce = 0%
Ended Job = job_local2039626018_0001
Stage-4 is selected by condition resolver.
Stage-3 is filtered out by condition resolver.
Stage-5 is filtered out by condition resolver.
Moving data to directory hdfs://hadoopdemo/user/bigdata/hive/warehouse/testdb.db/test001/.hive-staging_hive_2023-02-22_16-28-06_738_8793114222801018317-1/-ext-10000
Loading data to table testdb.test001
MapReduce Jobs Launched: 
Stage-Stage-1:  HDFS Read: 4 HDFS Write: 348 SUCCESS
Total MapReduce CPU Time Spent: 0 msec
OK
Time taken: 8.293 seconds
_col0	_col1
hive (testdb)> select * from test001;
select * from test001;
OK
test001.id	test001.dummy
1	X
hive (testdb)> Time taken: 0.241 seconds, Fetched: 1 row(s)
hive (testdb)> drop table test001;
drop table test001;
OK
Time taken: 0.218 seconds
hive (testdb)> show tables;
show tables;
OK
tab_name
values__tmp__table__1
hive (testdb)> Time taken: 0.063 seconds, Fetched: 1 row(s)

values__tmp__table__1为客户端内存中的临时数据,会在关闭客户端后删除,不会落盘。

遗留问题

提交任务到yarn集群失败

取消本地模式,在将任务提交到yarn是会有错误。判断是客户端环境配置问题,但是没有在客户端处解决。

yarn上的日志

************************************************************/
2023-02-22 16:35:04,263 INFO [main] org.apache.hadoop.security.SecurityUtil: Updating Configuration
2023-02-22 16:35:04,263 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Executing with tokens:
2023-02-22 16:35:04,263 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Kind: YARN_AM_RM_TOKEN, Service: , Ident: (appAttemptId { application_id { id: 1 cluster_timestamp: 1677047289113 } attemptId: 2 } keyId: 176967782)
2023-02-22 16:35:04,365 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: OutputCommitter set in config org.apache.hadoop.hive.ql.io.HiveFileFormatUtils$NullOutputCommitter
2023-02-22 16:35:04,367 INFO [main] org.apache.hadoop.service.AbstractService: Service org.apache.hadoop.mapreduce.v2.app.MRAppMaster failed in state INITED; cause: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.HiveFileFormatUtils$NullOutputCommitter not found
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.HiveFileFormatUtils$NullOutputCommitter not found
	at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2427)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$2.call(MRAppMaster.java:545)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$2.call(MRAppMaster.java:522)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.callWithJobClassLoader(MRAppMaster.java:1764)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.createOutputCommitter(MRAppMaster.java:522)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.serviceInit(MRAppMaster.java:308)
	at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$5.run(MRAppMaster.java:1722)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1889)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.initAndStartAppMaster(MRAppMaster.java:1719)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.main(MRAppMaster.java:1650)
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.HiveFileFormatUtils$NullOutputCommitter not found
	at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2395)
	at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2419)
	... 12 more
Caused by: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.HiveFileFormatUtils$NullOutputCommitter not found
	at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2299)
	at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2393)
	... 13 more
2023-02-22 16:35:04,369 FATAL [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Error starting MRAppMaster
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.HiveFileFormatUtils$NullOutputCommitter not found
	at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2427)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$2.call(MRAppMaster.java:545)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$2.call(MRAppMaster.java:522)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.callWithJobClassLoader(MRAppMaster.java:1764)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.createOutputCommitter(MRAppMaster.java:522)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.serviceInit(MRAppMaster.java:308)
	at org.apache.hadoop.service.AbstractService.init(AbstractService.java:164)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$5.run(MRAppMaster.java:1722)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1889)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.initAndStartAppMaster(MRAppMaster.java:1719)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.main(MRAppMaster.java:1650)
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.HiveFileFormatUtils$NullOutputCommitter not found
	at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2395)
	at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2419)
	... 12 more
Caused by: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.HiveFileFormatUtils$NullOutputCommitter not found
	at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2299)
	at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2393)
	... 13 more
2023-02-22 16:35:04,372 INFO [main] org.apache.hadoop.util.ExitUtil: Exiting with status 1: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.hive.ql.io.HiveFileFormatUtils$NullOutputCommitter not found

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

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

相关文章

并发与多线程

目录 第一节 并发基本概念及实现&#xff0c;进程&#xff0c;线程基本概念 &#xff08;1&#xff09;并发&#xff0c;进程&#xff0c;线程的基本概念和综述 &#xff08;1.1&#xff09;并发 &#xff08;1.2&#xff09;可执行程序 &#xff08;1.3&#xff09;进程 …

物理服务器与云服务器备份相同吗?

自从云计算兴起以来&#xff0c;服务器备份已经从两阶段的模拟操作演变为由云服务器备份软件执行的复杂的多个过程。但是支持物理服务器和虚拟服务器之间的备份相同吗?主要区别是什么?我们接下来将详细讨论这个问题。 物理服务器与云服务器备份的区别 如果您不熟悉虚拟服务器…

qt QCustomPlot学习

QCustomPlot 是一个基于Qt的画图和数据可视化C控件。QCustomPlot 致力于提供美观的界面&#xff0c;高质量的2D画图、图画和图表&#xff0c;同时为实时数据可视化应用提供良好的解决方案。 该绘图库专注于制作美观、出版物质量高的2D绘图、图形和图表&#xff0c;并为实时可视…

数据库专题

请简洁描述 MySQL 中 InnoDB 支持的四种事务隔离级别名称&#xff0c;以及逐级之间的区别&#xff1f; 默认隔离级别 mysql repeatable-read oracle read-committed 脏读&#xff1a;不可重复读&#xff1a;幻读&#xff1a; CHAR 和 VARCHAR 的区别&#xff1f;…

公众号运营之竞品分析,教你拆解公众号

知己知彼&#xff0c;百战不殆&#xff0c;公众号运营亦是如此。 当运营者只关注自己账号的时候&#xff0c;很容易陷入某个误区中出不来。这个时候就要拓宽我们的视野&#xff0c;多去看看“外面的世界”&#xff0c;不要只局限于自己的一片小天地中。 看看同领域优秀公众号…

stm32f407探索者开发板(二十二)——通用定时器基本原理讲解

文章目录一、三种定时器的区别二、通用定时器特点2.1 功能特点描述2.2 计数器模式三、通用定时器工作过程四、附一、三种定时器的区别 STM32F40x系列总共最多有14个定时器 三种&#xff08;4&#xff09;STM32定时器区别 二、通用定时器特点 2.1 功能特点描述 STM3 F4的通…

PHY设备驱动

1. 概述 MAC控制器的驱动使用的是platform总线的连接方式&#xff0c;PHY设备驱动是基于device、driver、bus的连接方式。 其驱动涉及如下几个重要部分&#xff1a; 总线 - sturct mii_bus (mii stand for media independent interface) 设备 - struct phy_device 驱动 - struc…

零日漏洞发展格局及防御策略

在过去的一年半中&#xff0c; 在野利用的零日漏洞数量持续飙升 &#xff0c;这些软件制造商尚不知晓的漏洞正在被国家行为体黑客组织和勒索软件团伙滥用。 今年上半年&#xff0c;Google Project Zero统计了近20个零日漏洞&#xff0c;其中 大部分针对微软、苹果和谷歌构建的…

【《C Primer Plus》读书笔记】第13章:文件输入/输出

【《C Primer Plus》读书笔记】第13章&#xff1a;文件输入/输出13.1 与文件进行通信13.1.1 文件是什么13.1.2 文本模式和二进制模式13.1.3 I/O的级别13.1.4 标准文件13.2 标准I/O13.3 一个简单的文件压缩程序13.4 文件I/O&#xff1a;fprintf()、fscanf()、fgets()和fputs()13…

【LVGL】学习笔记--(1)Keil中嵌入式系统移植LVGL

一 LVGL简介最近emwin用的比较烦躁&#xff0c;同时被LVGL酷炫的界面吸引到了&#xff0c;所以准备换用LVGL试试水。LVGL(轻量级和通用图形库)是一个免费和开源的图形库&#xff0c;它提供了创建嵌入式GUI所需的一切&#xff0c;具有易于使用的图形元素&#xff0c;美丽的视觉效…

极光笔记 | 埋点体系建设与实施方法论

PART 01 前 言随着网络技术的发展&#xff0c;从粗犷型到精细化运营型&#xff0c;再到现在的数字化运营&#xff0c;数据变得越来越细分和重要&#xff0c;不仅可以进行策略调整&#xff0c;还可以实现自动化的精细化运营。而数据价值的起点就是埋点&#xff0c;只有合理地埋点…

[计算机网络(第八版)]第一章 概述(学习笔记)

1.1 计算机网络在信息时代中的作用 21世纪是以网络为核心的信息时代&#xff0c;21世纪的重要重要特征&#xff1a;数字化、网络化与信息化。 三大类网络 电信网络&#xff1a;向用户提供电话、电报、传真等服务&#xff1b;有线电视网络&#xff1a;向用户传送各种电视节目&am…

zabbix4.0-使用zabbix监控别的主机-使用模板来创建图形

目录 1、 配置zabbix的yum源 2、下载zabbix-agent 3、配置zabbix-agent的配置文件 4、关闭防火墙&#xff0c;selinux 5、重启zabbix-agent 6、连通性测试&#xff0c;在zabbix-server服务器上面使用zabbix_get获取zabbix-agent服务器上的数据 7、在zabbix web端配置zab…

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Feb 2023)

Windows 11, version 22H2&#xff0c;2023 年 2 月 更新 请访问原文链接&#xff1a;https://sysin.org/blog/windows-11/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org 全新推出 Windows 11 全新 Windows 体验&#x…

考PMP的用处有哪些?备考攻略+资料分享

说到底&#xff0c;考PMP就是为了给工作提供便利&#xff0c;你考了之后会用它&#xff0c;将学习的东西运用到工作中&#xff0c;比如提高项目完成率&#xff0c;能升职加薪啊等等&#xff0c;那自然很是有用的。 不用&#xff0c;那就只是一张当摆设的纸&#xff0c;当然&am…

项目经理如何度量项目?及项目度量指标实例【静说】

度量项目是项目经理的一个重要职责&#xff0c;通过度量项目&#xff0c;项目经理可以了解项目的进展情况&#xff0c;及时发现问题并采取相应的措施&#xff0c;以确保项目能够按时、按质、按预算完成。 分享给大家一些常见的项目度量指标&#xff1a; 1. 项目进度&#xff…

docker-compose 简单配置php和nginx及注意事项

docker-compose.yml内容&#xff1a; /docker/web/config/nginx/conf/default.conf内容&#xff1a; server { listen 80; server_name localhost; root /usr/share/nginx/html; error_log /var/log/nginx/localhost.log; location / { try_files $…

ESP32-FPV-Camera介绍和使用

ESP32-FPV-Camera介绍和使用1. 编译目标2. 编译步骤Step 1 软件配置环境准备Step 2 获取开源代码Step 3 2.4G WiFi频段选择Step 4 要确保2.4G WiFi网卡处于Monitor状态Step 5 修改频点相关代码Step 6 修改WiFi网卡相关代码Step 7 OpenGL 版本问题Step 8 构建天空端Step 9 构建地…

从0开始写Vue项目-Vue实现用户数据批量上传和数据导出

从0开始写Vue项目-环境和项目搭建_慕言要努力的博客-CSDN博客从0开始写Vue项目-Vue2集成Element-ui和后台主体框架搭建_慕言要努力的博客-CSDN博客从0开始写Vue项目-Vue页面主体布局和登录、注册页面_慕言要努力的博客-CSDN博客从0开始写Vue项目-SpringBoot整合Mybatis-plus实现…

04--WXML

1、什么是WXML什么是Wxml呢&#xff1f;我们首先要介绍一下Html&#xff0c;Html的全称为HyperTextMarkup Language&#xff0c;翻译过来就是超文本标记语言&#xff0c;这种语言目前已经普遍用于前端开发&#xff0c;而wxml正是从html演变而来&#xff0c;它基于微信这个平台&…