【Hive实战】Windows下 IDEA DEBUG hiveMetastore hive2.3.9

news2024/11/21 21:16:55

Windows下 IDEA DEBUG hiveMetastore hive2.3.9

环境准备

  • 编译好hive2.3.9源码,参考文档编译hive2.3.9源码
  • 准备好Mysql库,并手动创建schema,相关sql文件:hive-schema-2.3.0.mysql.sqlhive-txn-schema-2.3.0.mysql.sql

启动前配置

在为配置完成之前,不要执行启动命令。

重点:为了不被idea的编译程序影响,现在启动类的配置上,一定要勾选“运行前不编译”的选项。

先启动HiveMetaStore,在启动CliDriver。

HiveMetaStore启动配置

  • 修改metastore模块中的pom.xml文件

        <!--新增依赖-->
    	<dependency>
          <groupId>org.apache.hive</groupId>
          <artifactId>hive-exec</artifactId>
          <version>${project.version}</version>
          <scope>runtime</scope>
        </dependency>
    	<dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.29</version>
          <scope>runtime</scope>
        </dependency>
    
        <!--调整依赖作用域,不调整会导致问题一(见问题小结)-->
        <dependency>
          <groupId>com.lmax</groupId>
          <artifactId>disruptor</artifactId>
          <version>${disruptor.version}</version>
    <!--      <scope>test</scope>-->
        </dependency>
    
  • 在metastore模块的编译输出文件target下的class文件夹中配置hive-site.xml文件,主要增加元数据存储库的配置(采用Mysql数据库),其他配置可以采用默认。

        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://198.168.1.1:3309/test_local_metastore?characterEncoding=UTF-8</value>
        </property>
    
        <property>
            <name>javax.jdo.option.ConnectionDriverName</name>
            <value>com.mysql.cj.jdbc.Driver</value>
        </property>
    
        <property>
            <name>javax.jdo.option.ConnectionUserName</name>
            <value>localhivemeta</value>
        </property>
    
        <property>
            <name>javax.jdo.option.ConnectionPassword</name>
            <value>localhivemeta</value>
        </property>
    
  • 配置HiveMetastore的启动类

    在启动的时候,禁止idea自动重新编译源码。
    在这里插入图片描述
    ObjectStore类是应用逻辑和包含对象的数据库存储之间的接口,可以从数据库和文件存储中存取。

CliDriver启动配置

  • 修改hive-cli模块中的pom文件,将commons-io,和disruptor范围取消test限制。

  • 在hive-cli模块的编译输出文件target下的class文件夹中配置hive-site.xml文件,主要是配置元数据服务的地址

        <!-- hive 元数据链接地址 HA-->
        <property>
            <name>hive.metastore.uris</name>
            <value>thrift://198.168.1.2:9083</value>
            <final>true</final>
        </property>
    
  • 配置Cli的启动类
    在这里插入图片描述

    -Djline.WindowsTerminal.directConsole=false

    HADOOP_USER_NAME=bigdata;HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native;HADOOP_OPTS=-Djava.library.path=$HADOOP_HOME/lib;HADOOP_HOME=E:\hadoop\hadoop-2.9.1

Debug举例:创建hive库

依次启动HiveMetaStore和CliDriver。

在CliDriver启动的控制台中,输入创建Hive的命令,在类CliDriver的main方法中一步步debug吧。

比如创建库,在调用元数据服务之前的逻辑在CliDriver的控制台中,可以在调用元数据服务之前的逻辑在HiveMetaStore的控制台中

create DATABASE if not EXISTS test20230423 COMMENT '测试的库' WITH DBPROPERTIES ('createUser'='顾栋','date'='20230423');

断点位置

  • DDLTask类中的方法public int execute(DriverContext driverContext)
  • ObjectStore类中方法public void createDatabase(Database db) throws InvalidObjectException, MetaException

问题小结

问题一:log4j2日志框架导致的问题

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
Exception in thread "main" java.lang.NoClassDefFoundError: com/lmax/disruptor/EventTranslatorVararg

调整disruptor依赖范围即可

问题二:持久化问题

MetaException(message:The class "org.apache.hadoop.hive.metastore.model.MDatabase" is not persistable. This means that it either hasnt been enhanced, or that the enhanced version of the file is not in the CLASSPATH (or is hidden by an unenhanced version), or the Meta-Data/annotations for the class are not found.)

这个问题是通过重新git clone项目重新编译,重新配置解决的。之前的配置启动中没有勾选“运行前不编译”的选项。不知道编译出来了啥导致这个问题。

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

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

相关文章

SpringCloud --- Gateway服务网关

一、简介 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 二、为…

QT实现固高运动控制卡示波器

目录 一、固高示波器 二、基于QCustomPlot实现示波器 三、完整源码 一、固高示波器 固高运动控制卡自带的软件有一个示波器功能&#xff0c;可以实时显示速度的波形&#xff0c;可辅助分析电机的运行状态。但是我们基于sdk开发了自己的软件&#xff0c;无法再使用该功能&…

深度学习技巧应用8-各种数据类型的加载与处理,并输入神经网络进行训练

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下深度学习技巧应用8-各种数据类型的加载与处理&#xff0c;并输入神经网络进行训练。在模型训练中&#xff0c;大家往往对各种的数据类型比较难下手&#xff0c;对于非结构化数据已经复杂的数据的要进行特殊处理&…

听我一句劝,别去外包,干了三年,废了....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

2.黑马SpringbBoot运维篇笔记自己修改

SpringBoot运维实用篇 ​ 基础篇发布以后&#xff0c;看到了很多小伙伴在网上的留言&#xff0c;也帮助超过100位小伙伴解决了一些遇到的问题&#xff0c;并且已经发现了部分问题具有典型性&#xff0c;预计将有些问题在后面篇章的合适位置添加到本套课程中&#xff0c;作为解…

[社区图书馆】《PyTorch高级机器学习实战》书评

《PyTorch高级机器学习实战》是一本非常实用的机器学习书籍&#xff0c;作者为阿里云智能首席AI专家赵健。这本书的目标读者是具有一定Python编程基础并对深度学习有兴趣的开发者和研究者。 在书中&#xff0c;作者从最基础的线性回归、逻辑回归、卷积神经网络&#xff08;CNN…

前端食堂技术周刊第 80 期:Vite 4.3、Node.js 20、TS 5.1 Beta、Windi CSS 即将落幕

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;东坡肉 食堂技术周刊仓库地址&#xff1a;https://github.com/Geekhyt/weekly 本期摘要 Vite 4.3Node.js 20TypeScript 5.1 BetaWindi CSS 即将落幕Pretty TypeScri…

springboot项目的jar文件以打包成docker镜像的方式部署

清单&#xff1a; 安装有docker的Linuxspringboot打包的jar文件&#xff08;该项目只有一个返回"hello world"接口&#xff09; Linux的IP地址&#xff1a;192.168.221.129 springboot项目的接口&#xff1a; 1、上传jar文件至Linux 我上传的位置为&#xff1a;/…

4.2——派生类的构造函数和析构函数

派生类继承了基类的成员&#xff0c;实现了原有代码的重用&#xff0c;但是基类的构造函数和析构函数不能被继承&#xff0c;在派生类中&#xff0c;如果对派生类新增的成员进行初始化&#xff0c;就需要加入派生类的构造函数。与此同时&#xff0c;对所有从基类继承下来的成员…

SpringMVC-学习修改尚硅谷最新教程笔记

三、SpringMVC 1、SpringMVC简介 1.1、什么是MVC MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; **一类称为实…

【JAVA-模块五 数组】

JAVA-模块五 数组 一、数组&#xff08;一维&#xff09;1.1数组是什么&#xff1f;1.2java中数组静态初始化&#xff1a;&#xff08;存&#xff09;两种定义格式&#xff1a;数组初始化格式&#xff1a;静态初始化后&#xff0c;打印数组名&#xff1a; 1.3 数组元素访问&…

win11 环境下streamlit使用pycharm debug

目录 1. pycharm中配置run 脚本2. streamlit3. 开始debug调试 1. pycharm中配置run 脚本 &#xff08;一&#xff09;点击 Edit Configurations,按图操作. 2. streamlit 1.streamlit 安装在 anaconda 的 base 环境&#xff08;随意哈&#xff0c;安装哪里都可以&#xff0c…

Zookeeper 面试题总结

Zookeeper 1、工作中 Zookeeper 有什么用途吗2、zookeeper 数据模型是什么样的3、那你知道 znode 有几种类型呢4、你知道 znode 节点里面存储什么吗5、每个节点数据最大不能超过多少呢6、你知道 znode 节点上监听机制嘛7、那你讲下 Zookeeper 特性吧8、你刚提到顺序一致性&…

LRU缓存淘汰策略——面试高频

⭐️前言⭐️ 本文主要介绍在面试中常见的高频手撕算法题目&#xff0c;LRU算法&#xff0c; &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区…

LEVIR-CD遥感建筑变化检测数据集

LEVIR-CD是一个新的大规模遥感二元变化检测数据集&#xff0c;它将有助于开发新的基于深度学习的遥感图像变化检测算法。 下载地址&#xff1a;https://justchenhao.github.io/LEVIR/ 历史消息 20230311:我们为LEVIR_CD中的每个样本补充了地理空间信息&#xff08;例如&#…

实例分割算法BlendMask

实例分割算法BlendMask 论文地址&#xff1a;https://arxiv.org/abs/2001.00309 github代码&#xff1a;https://github.com/aim-uofa/AdelaiDet 我的个人空间&#xff1a;我的个人空间 密集实例分割 ​ 密集实例分割主要分为自上而下top-down与自下而上bottom-up两类方法…

Node.js代码实例:简单Web服务端

文章目录 前言代码仓库为什么要写一份Node.js简单Web服务端的代码实例&#xff1f;内容目录结构代码server.jsindex.htmlindex.cssindex.jsvalue.html 结果总结参考资料作者的话 前言 Node.js代码实例&#xff1a;简单Web服务端。 代码仓库 yezhening/Programming-examples: …

LVS-DR

系列文章目录 文章目录 系列文章目录一、1.2. 二、实验1.2. 总结 一、 1. 2. 二、实验 1. 先把四台机器都关闭防火墙和安全机制 vim /etc/sysconfig/selinux把selinux都改成disabled 在NFS里面建立两个共享目录 给文件执行权限并写入内容给html 和www vim /etc/expor…

【C++】C++中的类型转化

说起类型转化&#xff0c;我们在C语言之前的学习中可以了解到&#xff0c;类型转换可以分为两种情况&#xff1a;隐式类型转化&#xff1b;显示类型转化。但是为什么在c中还要继续对类型转化做文章呢&#xff1f;我们一起来看&#xff1a; 目录 1. C语言中的类型转换 2. C强制…

【Transformer系列(5)】Transformer代码超详细解读(Pytorch)

前言 前面几篇我们一起读了transformer的论文&#xff0c;更进一步了解了它的模型架构&#xff0c;这一篇呢&#xff0c;我们就来看看它是如何代码实现的&#xff01; &#xff08;建议大家在读这一篇之前&#xff0c;先去看看上一篇模型结构讲解 这样可以理解更深刻噢&…