macbook本地部署 pyhive环境连接 hive用例

news2024/11/29 10:43:46

前言

公司的测试和生产环境中尚未提供基于Hive的客户端。若希望尝试操作Hive表,目前一个可行的方案是使用Python语言,通过借助pyhive库,您可以对Hive表进行各种操作。以下是一些示例记录供您参考。


一、pyhive是什么?

PyHive是一个Python库,用于与Apache Hive进行交互和查询。Apache Hive是建立在Hadoop平台上的数据仓库工具,旨在方便地执行SQL类型的查询以分析大型数据集。PyHive库允许Python开发人员通过编程语言来访问和操作Hive数据库,从而进行数据查询、分析和处理。

通过PyHive,可以使用Python编写Hive查询和命令,并从Python应用程序中直接访问和操作Hive中存储的数据。PyHive提供了与Hive数据库交互所需的API和功能,使得在Python环境中进行大规模数据处理变得更加简单和高效。

二、本地安装 pyhive库

1. 安装 pip 包管理工具

在Python环境中,通常会同时安装有pip和pip3这两个包管理工具,它们的主要区别在于所针对的Python版本。
pip:pip是用于Python 2.x版本的包管理工具。在Python 2.x环境下,pip通常是默认的包管理工具,用于安装、升级和管理Python包和依赖项。
pip3:pip3则是专为Python 3.x版本设计的包管理工具。在Python 3.x环境中,pip3用于安装、升级和管理Python 3.x的包和依赖项。需要注意的是,在某些情况下,pip3也可以用来代替pip,以确保在Python 2.x和Python 3.x环境中都能使用相同的包管理工具。
因此如果需要在Python 3环境下安装包时,应优先选择使用pip3来安装,以确保Python 3.x环境中的包管理工具正确安装和管理依赖项。如果您同时使用Python 2和Python 3环境,则需要注意使用不同的pip版本以避免混淆和冲突。

在 MacBook 上安装 pip 工具,可以按照以下步骤进行:

1. 安装 Homebrew(如果尚未安装)

Homebrew 是一个包管理工具,可以用来方便地安装和管理 macOS 上的软件包。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. 安装 Python(包括 pip)

使用 Homebrew 安装 Python,pip 通常会随 Python 一起安装。

brew install python

安装完成后,你可以检查 python3pip3 是否已经安装:

python3 --version
pip3 --version

3. 安装或升级 pip

如果你已经有 Python 安装,但没有 pip 或需要升级 pip,可以使用以下命令:

python3 -m ensurepip --upgrade

或者,如果你已经有 pip,可以通过以下命令升级它:

pip3 install --upgrade pip

4. 使用 pip 安装包

确认 pip 安装成功后,你可以使用 pip 安装 Python 包。例如,安装 requests 包(做个测试):

pip3 install requests
(myenv) ➜  ~ pip3 install requests
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting requests
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl (64 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 64.9/64.9 kB 1.6 MB/s eta 0:00:00
Collecting charset-normalizer<4,>=2 (from requests)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/2e/7d/2259318c202f3d17f3fe6438149b3b9e706d1070fe3fcbb28049730bb25c/charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.2/122.2 kB 4.1 MB/s eta 0:00:00
Collecting idna<4,>=2.5 (from requests)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/e5/3e/741d8c82801c347547f8a2a06aa57dbb1992be9e948df2ea0eda2c8b79e8/idna-3.7-py3-none-any.whl (66 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.8/66.8 kB 2.1 MB/s eta 0:00:00
Collecting urllib3<3,>=1.21.1 (from requests)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/a2/73/a68704750a7679d0b6d3ad7aa8d4da8e14e151ae82e6fee774e6e0d05ec8/urllib3-2.2.1-py3-none-any.whl (121 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.1/121.1 kB 4.0 MB/s eta 0:00:00
Collecting certifi>=2017.4.17 (from requests)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/5b/11/1e78951465b4a225519b8c3ad29769c49e0d8d157a070f681d5b6d64737f/certifi-2024.6.2-py3-none-any.whl (164 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 164.4/164.4 kB 4.1 MB/s eta 0:00:00
Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests
Successfully installed certifi-2024.6.2 charset-normalizer-3.3.2 idna-3.7 requests-2.32.3 urllib3-2.2.1

额外步骤:安装虚拟环境(可选)

使用虚拟环境可以帮助你管理项目依赖:

pip3 install virtualenv

创建一个新的虚拟环境:

python3 -m venv myenv

激活虚拟环境:

source myenv/bin/activate

退出虚拟环境:

deactivate

如何安装的速度太慢可以考虑换下国内的镜像:

常见的国内镜像源
以下是几个常见的国内 PyPI 镜像源:

清华大学: https://pypi.tuna.tsinghua.edu.cn/simple
阿里云: https://mirrors.aliyun.com/pypi/simple/
豆瓣(douban): https://pypi.douban.com/simple/
中国科学技术大学: https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学: https://pypi.hustunique.com/

2. 实操演示

代码如下(示例):

# 新建虚拟环境
➜  ~ python3 -m venv myenv
# 激活环境
➜  ~ source myenv/bin/activate
(myenv) ➜  ~ python -m pip install pyhive
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting pyhive
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/f6/ec/5c658b3a4d99a6d9145030cc8e003c3f7efc668d866e88544812ab0af310/PyHive-0.7.0.tar.gz (46 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 46.5/46.5 kB 652.1 kB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Collecting future (from pyhive)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl (491 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 491.3/491.3 kB 3.1 MB/s eta 0:00:00
Collecting python-dateutil (from pyhive)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 229.9/229.9 kB 5.7 MB/s eta 0:00:00
Collecting six>=1.5 (from python-dateutil->pyhive)
  Downloading https://pypi.tuna.tsinghua.edu.cn/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl (11 kB)
Building wheels for collected packages: pyhive
  Building wheel for pyhive (pyproject.toml) ... done
  Created wheel for pyhive: filename=PyHive-0.7.0-py3-none-any.whl size=53872 sha256=da53a804b81ecb864a3cc38acb060e3b17bd93cf9c7d914ebdccdbd999964302
  Stored in directory: /Users/mac/Library/Caches/pip/wheels/99/bf/03/0562e50cb60a3bcb0e09602d7060ea2c6da7039f99bda3ec86
Successfully built pyhive
Installing collected packages: six, future, python-dateutil, pyhive
Successfully installed future-1.0.0 pyhive-0.7.0 python-dateutil-2.9.0.post0 six-1.16.0




# 进入环境测试导入包无错误
➜  ~ source myenv/bin/activate
(myenv) ➜  ~ python
Python 3.12.3 (main, Apr  9 2024, 08:09:14) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyhive import hive
>>>

# 注意,如果还是报错可能还需要安装其他包(按照要求安装即可)
pip install pyhive
pip install thrift
pip install sasl
pip install thrift_sasl



3. 测试连接hive示例

3.1 hive连接 jdbc 命令行

(myenv) ➜  hive bin/beeline -u jdbc:hive2://localhost:10000 -n root -p root
Connected to: Apache Hive (version 3.1.3)
Driver: Hive JDBC (version 3.1.3)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.3 by Apache Hive
0: jdbc:hive2://localhost:10000> show databases;
INFO  : Compiling command(queryId=mac_20240608144604_4395d68b-785d-4808-8c09-1732ad816350): show databases
INFO  : Concurrency mode is disabled, not creating a lock manager
INFO  : Semantic Analysis Completed (retrial = false)
INFO  : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:database_name, type:string, comment:from deserializer)], properties:null)
INFO  : Completed compiling command(queryId=mac_20240608144604_4395d68b-785d-4808-8c09-1732ad816350); Time taken: 0.748 seconds
INFO  : Concurrency mode is disabled, not creating a lock manager
INFO  : Executing command(queryId=mac_20240608144604_4395d68b-785d-4808-8c09-1732ad816350): show databases
INFO  : Starting task [Stage-0:DDL] in serial mode
INFO  : Completed executing command(queryId=mac_20240608144604_4395d68b-785d-4808-8c09-1732ad816350); Time taken: 0.037 seconds
INFO  : OK
INFO  : Concurrency mode is disabled, not creating a lock manager
+----------------+
| database_name  |
+----------------+
| default        |
| test           |
| tmp            |
+----------------+
3 rows selected (1.113 seconds)
0: jdbc:hive2://localhost:10000>


0: jdbc:hive2://localhost:10000> select * from test.login_data limit 3;
+----------------------+------------------------+------------------+----------------+
|  login_data.logtime  | login_data.account_id  |  login_data.ip   | login_data.dt  |
+----------------------+------------------------+------------------+----------------+
| 2019-07-15 00:00:00  | 102325                 | 223.116.97.23    | 2019-07-15     |
| 2019-07-15 00:00:00  | 221977                 | 223.104.247.162  | 2019-07-15     |
| 2019-07-15 00:00:00  | 223764                 | 59.32.248.102    | 2019-07-15     |
+----------------------+------------------------+------------------+----------------+
3 rows selected (1.487 seconds)

3.2 pyhive连接获取数据示例

(myenv)~ python
Python 3.12.3 (main, Apr  9 2024, 08:09:14) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyhive import hive
>>> conn = hive.Connection(host="localhost", port=10000, username="root")
>>> cursor = conn.cursor()
>>> cursor.execute('select * from test.login_data limit 3')
>>> for row in cursor.fetchall():
...     print(row)
...
('2019-07-15 00:00:00', 102325, '223.116.97.23', '2019-07-15')
('2019-07-15 00:00:00', 221977, '223.104.247.162', '2019-07-15')
('2019-07-15 00:00:00', 223764, '59.32.248.102', '2019-07-15')
>>> cursor.close()
>>> conn.close()

完整示例:

from pyhive import hive
import logging

# 配置日志记录
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

try:
    # 配置 Hive 连接参数
    host = 'localhost'
    port = 10000
    username = 'root'
    database = 'test'

    # 创建连接
    conn = hive.Connection(host=host, port=port, username=username, database=database)

    # 创建游标
    cursor = conn.cursor()

    # 执行查询
    query = 'select * from test.login_data limit 3'
    cursor.execute(query)

    # 获取查询结果
    results = cursor.fetchall()
    for row in results:
        print(row)

except Exception as e:
    logger.error("Error occurred while connecting to Hive or executing query", exc_info=True)
finally:
    # 确保游标和连接在异常情况下也能正确关闭
    try:
        if cursor:
            cursor.close()
    except Exception as e:
        logger.error("Error occurred while closing cursor", exc_info=True)
    try:
        if conn:
            conn.close()
    except Exception as e:
        logger.error("Error occurred while closing connection", exc_info=True)

运行结果:

(myenv) ➜  tmp python test.py
INFO:pyhive.hive:USE `test`
INFO:pyhive.hive:select * from test.login_data limit 3
('2019-07-15 00:00:00', 102325, '223.116.97.23', '2019-07-15')
('2019-07-15 00:00:00', 221977, '223.104.247.162', '2019-07-15')
('2019-07-15 00:00:00', 223764, '59.32.248.102', '2019-07-15')

未解决问题

使用 Pycharm开发的时候提示如下报错:
在这里插入图片描述
这个应该是没有应用到我虚拟 myenv环境导致的,尝试新建一个新的解释器但是未成功,有么有知道怎么做的欢迎和我讨论。

参考

https://www.cnblogs.com/SunshineKimi/p/12969751.html

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

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

相关文章

电脑提示缺失iUtils.dll文件怎么办,分享几种靠谱的解决方法

在现代科技发展迅猛的时代&#xff0c;电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;随着使用时间的增长&#xff0c;电脑也会出现一些问题&#xff0c;其中之一就是开机时弹出窗口提示找不到iUtils.dll文件。这个问题可能会给用户带来困扰和不便&#xff0c;…

[AIGC] Springboot 自动配置的作用及理由

在详细解释SpringBoot的自动配置之前&#xff0c;先介绍以下背景知识。在创建现代复杂的应用程序时&#xff0c;一个困难的部分是正确地设置您的开发环境。这个问题尤其在Java世界中尤为突出&#xff0c;因为您必须管理和配置许多独立的标准和技术。 当我们谈论Spring Boot的自…

react 基础样式的控制(行内和className)

import ./index.cssconst style{color:red,font-size:150px }function App() {return (<div className"App"><h1>行内样式控制</h1><h1 style{{color:red,font-size:150px}} >asd </h1><span style{style} >asd </span>&l…

二叉排序树--c++

【相关知识】 二叉排序树&#xff08;也称二叉查找树&#xff09;&#xff1a;或者是一棵空的二叉树&#xff0c;或者是具有下列性质的二叉树&#xff1a; ⑴ 若它的左子树不空&#xff0c;则左子树上所有结点的值均小于根结点的值&#xff1b; ⑵ 若它的右子树不空&#xff0c…

基本算法-枚举、模拟、递推(上)

目录 递归实现指数型枚举 题目描述 运行代码 代码思路 递归实现组合型枚举 题目描述 运行代码 代码思路 递归实现排列型枚举 题目描述 运行代码 代码思路 递归实现指数型枚举 题目描述 登录—专业IT笔试面试备考平台_牛客网 运行代码 #include<iostream> …

Java装饰器模式,装饰器模式通常通过创建一个接口和一个或多个实现了该接口的类来开始,然后创建装饰器类,这些类也实现了相同的接口

1、定义一个接口Component public interface Component { void operation(); }2、创建一个实现了Component接口的简单类SimpleComponent public class SimpleComponent implements Component { Override public void operation() { System.out.println("SimpleCom…

【JS重点知识05】正则表达式

本文章目标&#xff1a;学习正则表达式概念及语法&#xff0c;编写简单的正则表达式实现字符查找或检测&#xff1b; 一&#xff1a;正则表达式简介 1 什么是正则表达式 是用于匹配字符串中字符组合的模式。在JS中&#xff0c;正则表达式也是对象 2 正则表达式作用 表单验…

【C#】WinForm关闭新(二级)界面使主程序关闭

参考视频&#xff1a;https://www.bilibili.com/video/BV1JY4y1G7jo?p14&vd_source1c57ab1b2e551da5b65c0dfb0f05a493 1.背景介绍 主程序界面&#xff0c;点击弹出二级界面&#xff08;同时隐藏主界面&#xff09;&#xff0c;不做任何设置&#xff0c;这时关闭二级界面…

FM1202,FM020和利时备品

FM1202,FM020和利时备品,统硬件设备、数据库、控制算法、图形、报表&#xff09;和相关系统参数的设置。对整个系统进行监视和控制。操作员站主要完成以下FM1202,FM020和利时备品,各种监视信息的显示、查询和打印&#xff0c;主要有工艺流程图显示、趋势显示、参数列表显示、报…

将二叉排序树转换成双向链表--c++【做题记录】

【问题描述】 编写程序在不增加结点的情况下&#xff0c;将二叉排序树转换成有序双向链表&#xff08;如下图&#xff09;。 链表创建结束后&#xff0c;按照从前往后的顺序输出链表中结点的内容。 【输入输出】 【输入形式】 第一行输入数字n&#xff0c;第二行输入n个整数…

【CS.SE】浅谈: 程序员的职业素养与成长之路

文章目录 1 引言2 持续学习与自我提升2.1 永无止境的学习之路2.2 真实案例&#xff1a;自学Python 3 团队合作与沟通能力3.1 高效沟通是团队成功的基石 4 责任心与职业道德4.1 责任心&#xff1a;代码背后的承诺4.2 真实案例&#xff1a;修复紧急Bug 5 适应变化与快速反应5.1 适…

Linux安装MySQL教程【带图文命令巨详细】

巨详细Linux安装MySQL 1、查看是否有自带数据库或残留数据库信息1.1检查残留mysql1.2检查并删除残留mysql依赖1.3检查是否自带mariadb库 2、下载所需MySQL版本&#xff0c;上传至系统指定位置2.1创建目录2.2下载MySQL压缩包 3、安装MySQL3.1创建目录3.2解压mysql压缩包3.3安装解…

用Python代码锁定Excel单元格以及行和列

Excel能够帮助用户高效地组织数据&#xff0c;还支持复杂的公式计算和数据分析。而随着团队协作的日益频繁&#xff0c;保护数据的准确性和完整性变得尤为重要。在Excel表格中&#xff0c;我们可以通过锁定特定的单元格或区域&#xff0c;防止对单元格内容进行随意修改&#xf…

2024年全国大学生数据统计与分析竞赛B题论文和代码:电信银行卡诈骗检测数据分析和机器学习模型构建

2024年全国大学生数据统计与分析竞赛B题论文和代码已完成&#xff0c;代码为B题全部问题的代码&#xff0c;论文包括摘要、问题重述、问题分析、模型假设、符号说明、模型的建立和求解&#xff08;问题1模型的建立和求解、问题2模型的建立和求解、问题3模型的建立和求解&#x…

人工智能--Foxmail邮箱使用方法

目录 &#x1f349;Foxmail全面指南 &#x1f349;下载与安装 &#x1f348;下载软件 &#x1f348;安装软件 &#x1f349;配置邮箱 &#x1f348;启动 Foxmail &#x1f348;添加邮箱账户 &#x1f348;手动配置邮箱 &#x1f34d;接收邮件服务器 (IMAP/POP3) &…

亘古真知

目录 一&#xff0c;概述 二&#xff0c;个人面板 三&#xff0c;科技面板 四&#xff0c;手牌 五&#xff0c;回合 1&#xff0c;行动 &#xff08;1&#xff09;打造 &#xff08;2&#xff09;学习 &#xff08;3&#xff09;归档 &#xff08;4&#xff09;挖掘 …

麒麟操作系统运维工程师(KYCP)课程,实现职业突破

在IT行业中&#xff0c;掌握先进的技能和知识是实现职业突破的关键。如果你希望在麒麟操作系统上成为一名卓越的运维工程师&#xff0c;那么麒麟操作系统运维工程师&#xff08;KYCP&#xff09;课程将是你的理想全面提升学员在麒麟操作系统环境下的运维能力。课程内容涵盖安全…

如何提高网站访问量?

提高网站访问量通常需要一个多方面的策略&#xff0c;涉及SEO、内容营销、社交媒体和其他网络营销手段&#xff0c;而我们仅从seo入手来说说 关键词优化是SEO的核心&#xff0c;它确保网站能够针对潜在用户的搜索查询进行优化。这不仅涉及在网站内容中使用正确的关键词 还需要…

Lua移植到标准ANSI C环境

本文目录 1、引言2、环境准备2.1 源码下载2.2 项目构建环境准备 3、项目编译3.1 添加main.c3.2 Kconfig选择模块3.3 项目构建3.4 项目编译 4、运行 文章对应视频教程&#xff1a; 在下方喔 ~~~ 欢迎关注 点击图片或链接访问我的B站主页~~~ lau解释器移植与功能验证 1、引言 本…

探索LLM 在金融领域有哪些潜在应用——通过使用 GPT-4 测试金融工程、市场预测和风险管理等 11 项任务

概述 近年来&#xff0c;用于自然语言理解和生成的人工智能技术在自然语言处理领域取得了突破性进展&#xff0c;OpenAI 的 GPT 和其他大规模语言模型在该领域取得了显著进步。这些模型通过先进的计算能力和算法&#xff0c;展示了处理复杂任务的能力&#xff0c;如理解复杂语…