【Hive】Hive开启远程连接及访问方法

news2024/9/24 16:47:07

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

Hive开启远程连接及访问方法

本文关键字:Hive、远程连接、MetaStore、JDBC、SparkSQL

文章目录

  • Hive开启远程连接及访问方法
    • 一、Hive连接配置
      • 1. 默认初始配置
      • 2. 开启远程连接
    • 二、界面化工具
      • 1. DBeaver
      • 2. DataGrip
    • 三、IDEA插件
      • 1. Big Data Tools
      • 2. 内置DataGrip
    • 三、HiveJDBC
      • 1. 所需依赖
      • 2. 案例代码
    • 四、SparkSQL
      • 1. 所需依赖
      • 2. 嵌入模式连接
      • 3. 网络模式连接

一、Hive连接配置

1. 默认初始配置

一般我们会使用一些关系型数据库,如MySQL作为Hive的MetaStore位置。所以默认会在hive-site.xml中存在如下配置:

<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true&amp;useSSL=false&amp;serverTimezone=UTC</value>
    <description>Metadata store connection URL</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
    <description>Metadata store JDBC driver</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
    <description>Metadata store username</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
    <description>Metadata store password</description>
  </property>
</configuration>

用来配置Hive连接关系型数据库时的连接参数,此时我们已经可以通过hive命令直接进行访问了:

其它详细安装及初始化步骤可以参考:Hive 3.x的安装部署 - Ubuntu。

2. 开启远程连接

在进行开发时,我们通常需要能够在代码中访问Hive进行查询,此时我们要做一些配置和修改。第一种方式是直接开启一个hiveserver2的Hive服务端,用来提供执行 SQL 查询和获取结果的接口。第二种模式是直接开启一个Metastore服务,以网络模式/远程模式来为访问提供支持。两种模式都有各自的使用场景,在多节点的生产环境中多采用网络模式【有利于保证数据的一致性】,开发测试环境中多采用伪分布模式,因此嵌入模式通常足够。

  • 嵌入模式

HiveServer2 可以接收来自各种客户端(如 Beeline、JDBC/ODBC 驱动、程序语言库等)的请求,然后在 Hive 中执行相应的操作。在这种情况下,Hive依然运行在嵌入模式下,我们只需要在后台开启一个hiveserver2服务,就可以满足Beeline、JDBC的远程访问。使用以下命令:

nohup hive --service hiveserver2 --hiveconf hive.server2.thrift.bind.host=0.0.0.0 --hiveconf hive.server2.thrift.port=10000 &

使用beeline访问:

beeline -u jdbc:hive2://ubuntu:10000


如果出现连接异常,尝试在Hadoop的core-site.xml添加以下配置【其中hadoop为启动Hadoop进程的用户名】并重启集群与hiveserver2:

<property>
  <name>hadoop.proxyuser.hadoop.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.hadoop.groups</name>
  <value>*</value>
</property>
  • 网络模式

有很多界面化的工具或插件并不是基于JDBC封装的,因此有时需要手动开启网络模式。特别对于其它大数据集群框架,有时需要直接访问到Hive的Metastore,则也需要开启相关的配置。首先修改hive-site.xml,添加如下配置:

  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://ubuntu:9083</value>
  </property>

特别说明:添加该配置以后必须启动metastore后才能正常使用hive客户端连接。启动命令如下:

nohup hive --service metastore &

如果每次Hadoop集群发生重启或异常,也需要重新启动metastore和hiveserver2。

二、界面化工具

很多基于JDBC封装的软件,如DBeaver、DataGrip都可以使用这样的方式进行连接。只需要填写主机及端口,也可以通过SSH隧道连接,需要已经开启hiveserver2

1. DBeaver

2. DataGrip

三、IDEA插件

1. Big Data Tools

这是一款IDEA中使用的比较多并且相对的稳定的大数据插件,整合了多种组件的支持,用起来十分的顺手,有了它基本不需要再切换到其它软件了,远程会话和文件传输也都是可以的。在这个组件中,新建一个Hive的连接使用的是thrift协议,也就代表我们要保证metastore服务的配置和启动。

2. 内置DataGrip

IDEA中有一款内置的数据源连接插件,也就是停靠在界面右侧的数据库图标,如果没有出现可以在视图 - 工具窗口中找到。界面和DataGrip是一样的,同样是基于hiveserver2,以JDBC的方式连接。

三、HiveJDBC

1. 所需依赖

在pom.xml中添加如下内容,具体版本可以根据需要修改:

        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>3.1.3</version>
        </dependency>

2. 案例代码

以下为使用Java连接Hive的基本步骤,因为JDBC是一个标准化的工作流程,所以只有URLDRIVER需要修改:

import java.sql.*;

public class JDBC {

    private static final String DRIVER_NAME = "org.apache.hive.jdbc.HiveDriver";

    public static void main(String[] args) throws SQLException {
        try {
            Class.forName(DRIVER_NAME);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        // 根据需要替换 Hive的 服务器地址,用户名和密码【如有】
        String hiveUrl = "jdbc:hive2://ubuntu:10000/";
        String user = "";
        String password = "";
        // 建立连接
        Connection con = DriverManager.getConnection(hiveUrl, user, password);
        // 获得操作对象
        Statement stmt = con.createStatement();

        // 使用你自己的 Hive SQL 查询
        String sql = "SELECT * FROM test.user_info";
        System.out.println("Running: " + sql);
        ResultSet res = stmt.executeQuery(sql);
        // 简单遍历输出
        while (res.next()) {
            System.out.println(res.getString(1) + "\t"
                    + res.getString(2) + "\t"
                    + res.getString(3));
        }

        // 关闭资源
        res.close();
        stmt.close();
        con.close();
    }

}

四、SparkSQL

我们经常会使用Spark去操作Hive中的表,这样做通常会比较高效。在建立连接时,如果Hive使用的是嵌入模式,我们必须告知元数据存储的连接信息,包括连接字符串,用户名,密码等等。如果Hive使用的是网络模式,我们可以直接访问已经配置的uri。

1. 所需依赖

在pom.xml中添加如下内容,具体版本可以根据需要修改:

		<dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-metastore</artifactId>
            <version>2.3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_2.12</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.0.33</version>
        </dependency>

特别注意:使用Java开发时,可能会存在版本兼容问题,这是因为Spark 3.x并没有完全兼容Hive 3.x,因此指定依赖版本时需要使用2.x。但是如果使用SBT构建Scala项目,则不存在这个问题。

2. 嵌入模式连接

如果Hive没有运行单独的Metastore服务,则此时需要保证Spark能够直接访问到存储元数据的关系型数据库,需要添加如下四个配置:

  • javax.jdo.option.ConnectionURL
  • javax.jdo.option.ConnectionDriverName
  • javax.jdo.option.ConnectionUserName
  • javax.jdo.option.ConnectionPassword

也可以直接将hive-site.xml放置在resources文件夹,可以自动读取其中的配置。

import org.apache.spark.sql.*;

public class Hive {

    public static void main(String[] args) {
        SparkSession spark = SparkSession
                .builder()
                .appName("Spark Hive Example")
                .master("local[*]")
                .config("javax.jdo.option.ConnectionURL", "jdbc:mysql://ubuntu:3306/hive_metastore?" +
                        "createDatabaseIfNotExist=true&useSSL=false&serverTimezone=UTC")
                .config("javax.jdo.option.ConnectionDriverName", "com.mysql.cj.jdbc.Driver")
                .config("javax.jdo.option.ConnectionUserName", "root")
                .config("javax.jdo.option.ConnectionPassword", "root")
                .enableHiveSupport()
                .getOrCreate();
        // 使用 Spark SQL 查询 Hive 表
        String sql = "SELECT * FROM test.user_info"; 
        Dataset<Row> result = spark.sql(sql);
        // 打印结果
        result.show();
        // 运行结束
        spark.stop();
    }
}

以上代码为使用本地模式运行Spark,用于快速测试,不需要搭建Spark环境。

  • 附:Ubuntu - MySQL 8.x开启远程连接步骤

修改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address            = 0.0.0.0

登录mysql执行以下sql语句:

CREATE USER 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3. 网络模式连接

如果Hive开启了Metastore服务,则可以直接通过该端口进行连接,连接时只要保证端口可以访问即可。代码如下:

import org.apache.spark.sql.*;

public class Hive {

    public static void main(String[] args) {
        SparkSession spark = SparkSession
                .builder()
                .appName("Spark Hive Example")
                .master("local[*]")
                .config("hive.metastore.uris", "thrift://ubuntu:9083")
                .enableHiveSupport()
                .getOrCreate();
        // 使用 Spark SQL 查询 Hive 表
        String sql = "SELECT * FROM test.user_info";
        Dataset<Row> result = spark.sql(sql);
        // 打印结果
        result.show();
        // 运行结束
        spark.stop();
    }
}

扫描下方二维码,加入CSDN官方粉丝微信群,可以与我直接交流,还有更多福利哦~
在这里插入图片描述

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

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

相关文章

UE5关于高亮显示物体轮廓线

描边材质如果是透明的话&#xff0c;不会显示描边&#xff0c;材质参数勾选【允许自定义深度写入】即可 材质参考这个文章&#xff1a;https://blog.csdn.net/Axiang_0123/article/details/121168272?ops_request_misc&request_id&biz_id102&utm_termUE%E6%9D%90…

多元分类预测 | Matlab灰狼算法(GWO)优化极限学习机(ELM)的分类预测,多特征输入模型。GWO-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | 灰狼算法(GWO)优化极限学习机(ELM)的分类预测,多特征输入模型。GWO-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可出…

STM32 HAL库手动配置过程

手动配置HAL库与配置固件库工程类似 1、首先新建四个文件夹 2、打开keil5&#xff0c;新建新工程在Project文件夹中 按开发板选择芯片 3、添加hal相关库到工程目录Libraries下 4、在User下新建main.c 5、在工程配置中新建5个组 6、将对应文件添加到工程中 添加启动文件到STAR…

MacPro M2 vscode 配置JAVA开发环境(1)

MacPro 使用vscode 配置Java开发环境 1.vscode 下载2. 安装 Mac 自己的芯片据说已经迭代到M3了&#xff0c;作为一名从windows转mac的小白&#xff0c;本文记录下在mac 中使用vscode开发的环境配置。 1.vscode 下载 对于开源项目&#xff0c;奉行官网优先的原则。 所以先去官…

苹果再施手段,iPhoneX停止升级iOS,迫使用户选购新iPhone

iPhone14不好卖&#xff0c;这段时间大举降价&#xff0c;最高降幅一度达到2000元&#xff0c;不过或许是降价并未能有效拉动销量&#xff0c;苹果如今还采取另一种措施&#xff0c;停止对旧款iPhone的支持&#xff0c;迫使消费者选购新iPhone。 据悉苹果新推出的iOS17操作系统…

STM32 HAL 库驱动 ESP8266 WiFi 模块

STM32 HAL 库驱动 ESP8266 WiFi 模块 实验原理 关于 ESP8266 WiFi 模块使用原理可以看我前面的博客 WiFi 驱动代码连接将会放到文末 这里我们将芯片换为 STM32F103ZET6&#xff0c;别问为什么&#xff0c;问就是引脚资源多 CubeMX 配置 USART2 与 USART3 配置 这里我们使用的配…

chatgpt赋能python:Python解ODE:优雅地解决微分方程

Python解ODE&#xff1a;优雅地解决微分方程 介绍 ODE&#xff08;Ordinary Differential Equation&#xff0c;常微分方程&#xff09;是数学中一个核心领域。为了求解ODE&#xff0c;需要一些高深的数学知识和专业的工具。然而&#xff0c;如果你是一位Python程序员&#x…

RuntimeError: expected scalar type Long but found Float报错解决

在torch模型转onnx模型&#xff0c;我会生成一个随机序列&#xff0c;通过模型预测看输出的维度是否一致吗但是遇到这个报错 我是这样生成的 dummy_input torch.randn(1,1,1200) dummy_output model_pytorch(dummy_input) print(dummy_output.shape) RuntimeError: expec…

SpringBoot基于Mybatis或Mybatis-Plus自定义实现完整SQL打印和执行耗时

注释相当完善了&#xff0c;不啰嗦。直接上代码&#xff1a; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.reflect.FieldUtils; import org.apache.ibatis.executor.parameter.ParameterHandler; impor…

移远通信率先完成5G RedCap运营商实网测试,为商用部署奠定良好基础

近日&#xff0c;移远通信Rx255C 5G RedCap系列模组在上海率先完成了运营商RedCap实网环境下的测试&#xff0c;并成功验证了RedCap网络接入等一系列能力&#xff0c;为加速RedCap在中高速物联网领域的商用部署奠定了良好的基础。 位于上海市嘉定区的RedCap实网测试现场 本次外…

​价值驱动-数据分析价值逻辑与实践思考

月説小飞象交流会 未来是一片迷雾&#xff0c;令人胆怯&#xff0c;但不妨走下去&#xff0c;看看命运给我们准备了什么。 内部交流│25期 价值驱动 数据分析价值逻辑与实践思考 data analysis ●●●● 分享人&#xff1a;黄小伟 当今的企业&#xff0c;随着数字化技术日新月异…

机器学习——深度学习

1 感知机 y f ( ∑ i 1 n w i x i − b ) yf(\sum\limits_{i1}^{n}w_ix_i-b) yf(i1∑n​wi​xi​−b) 其中&#xff0c; f f f 常常取阶跃函数或 Sigmoid 函数。 学习规则&#xff1a; Δ w i η ( y − y ^ ) x i w i ← w i Δ w i \Delta w_i\eta(y-\hat{y})x_i\\ w_i…

C高级重点

1、请简要描述一下Linux文件系统的层级结构&#xff0c;包括不同目录的作用和功能。 Linux的文件系统结构是一个倒插树结构&#xff0c;所有的文件都从根目录出发。 2、find指令的用途 find 查找的路径 -name 文件名 ----->在指定路径下&#xff0c;以文件名为条件查找文…

windows gcc、g++和cmake安装

1、gcc gwindows版本工具mingw下载安装 参考&#xff1a;https://blog.csdn.net/didi_ya/article/details/111240502 https://blog.csdn.net/weixin_46416035/article/details/127387170 ##看这个 下载&#xff1a; https://sourceforge.net/projects/mingw-w64/files/mingw…

图书搜索领域重大突破!用Apache SeaTunnel、Milvus和OpenAI提高书名相似度搜索精准度和效率

作者 | 刘广东&#xff0c;Apache SeaTunnel Committer 背景 目前&#xff0c;现有的图书搜索解决方案&#xff08;例如公共图书馆使用的解决方案&#xff09;十分依赖于关键词匹配&#xff0c;而不是对书名实际内容的语义理解。因此会导致搜索结果并不能很好地满足我们的需…

nodejs安装记录

1.更改安装目录 D:\env\nodejs 2.命令行输入 node -v 查看nodejs的版本号 3.命令行输入 npm -v查看npm的版本号 4.修改模块安装和缓存路径 之前的设置&#xff1a; 在nodejs安装目录下新建一个文件夹&#xff0c;命名为 node_cache 使用命令修改config配置&#xff0c;首先…

【超简单】Windows 使用 mstsc 远程连接 Ubuntu桌面

登录网站下载 《xrdp-installer-1.4.7.zip》 xRDP Installation Script (free)&#xff1a;https://c-nergy.be/repository.html 在Ubuntu 下&#xff0c;解压&#xff0c;添加x 权限后执行安装 chmod 777 xrdp-installer-1.4.7.sh ./xrdp-installer-1.4.7.sh安装完毕后&…

【嵌入式模型转换】2. 算能盒子SE5 芯片板子BM1684 sophon-pipeline

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1. 开始安装 前言 文章1&#xff0c;我们在SE5上实现了&#xff0c;SOC模式下的 C 和 python-sail的模型转换&#xff0c;文章连接&#xff1a; 【嵌入式模型转…

VUE L ∠脚手架新生命周期过度动画 ⑩⑦

目录 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持✨ V u e j s Vuejs Vuejs初识 V u e C L I VueCLI VueCLI C L I CLI CLI n e x t T i c k nextTick nextTick C L I CLI CLI V u e Vue Vue封装的过度与动画 C L I CLI …

第十五章 Swin-Transformer网络详解

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…