pyhive入门介绍和实例分析(探索票价与景点评分之间是否存在相关性)

介绍

PyHive 是一组 Python DB-API 和 SQLAlchemy 接口,可用于 Presto 和 Hive。它为 Python 提供了一个与 Presto 和 Hive 进行交互的平台,使得数据分析师和工程师可以更方便地进行数据处理和分析。

以下是使用 PyHive 进行数据分析时需要注意的几点:

  1. 安装和配置: 在开始之前,确保已经安装了以下软件:

    • Pip
    • Python 建议使用anaconda方便管理
    • JDK 注意兼容性
    • HivePresto
    • 版本兼容性: 确保 PyHive 版本与 Hive 或 Presto 版本兼容。不同版本之间可能会有一些差异,需注意兼容性。
      安装 PyHive 可以使用以下命令:
    pip install pyhive [hive]
    

    如果你想安装 Presto 驱动器,请使用以下命令:

    pip install pyhive [presto]
    
  2. 连接 Hive 数据库: 使用 PyHive 连接 Hive 数据库非常简单。你需要传递正确的连接参数,例如:

    from pyhive import hive
    connection = hive.Connection(host='localhost', port=10000, database='mydatabase')
    
  3. 执行查询: 使用 PyHive 执行查询也很容易,只需使用游标对象来执行查询:

    cursor = connection.cursor()
    cursor.execute('SELECT * FROM mytable')
    result = cursor.fetchall()
    for row in result:
        print(row)
    
  4. 使用 Pandas 进行数据分析: 如果你更喜欢使用 Pandas 进行数据分析,可以将查询结果转换为 Pandas DataFrame

    import pandas as pd
    df = pd.read_sql('SELECT * FROM mytable', connection)
    print(df)
    

代码示例

from pyhive import hive

# 设置连接参数
host = 'your_host'
port = 10000
username = 'your_username'
password = 'your_password'
database = 'your_database'

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

# 创建 Cursor 对象
cursor = conn.cursor()

# 执行查询
query = "SELECT * FROM your_table LIMIT 10"
cursor.execute(query)

# 获取查询结果
results = cursor.fetchall()

# 处理结果
for row in results:
    print(row)

# 关闭连接
cursor.close()
conn.close()

分析实例

现有两个hive表,表结构大约为:

image.png
image.png

需要实现需求:

票价与评分的关系: 探索票价与景点评分之间是否存在相关性。分析不同票价档次下景点的评分分布情况,以确定价格对游客评价的影响程度。

首先 找到所有非空的景区,

在xiecheng表中找到所有averagescore不为null的数据,在qvna表中找到所有price不为null的数据。

联合查询:
将两表所需数据放在一起。

将查询到的数据放到新的表中以方便后续查找和使用:

分类查找并计算平均值:

代码:


# Author: 冷月半明
# Date: 2023/12/6
# Description: This script does XYZ.

from pyhive import hive

def creatConnection():
    conn = hive.Connection(host='******', port=10000, username='root')
    return conn

# 连接到 Hive
conn = creatConnection()
cursor = conn.cursor()


# 进入数据库
query = "use cjw_data"
cursor.execute(query)
# 查询去哪价格非空的景区
# query = "SELECT id,price FROM qvna WHERE price IS NOT NULL"
# 查询携程平均分非空的景区
# query = "SELECT id,averagescore FROM xiecheng WHERE averagescore IS NOT NULL"
# 将查询到的id,title,价格,平均分等数据存储到新的表中
# query = "CREATE TABLE priceAndCore AS " \
#         "SELECT qvna_clean.id,title,price,averagescore "\
# "FROM "\
# "    (SELECT id ,title,price FROM qvna WHERE price IS NOT NULL) AS qvna_clean "\
# "JOIN "\
# "    (SELECT id,averagescore FROM xiecheng WHERE averagescore IS NOT NULL) AS xiecheng_clean "\
# "ON qvna_clean.id = xiecheng_clean.id " \
#         # " LIMIT 5"\

# 计算各个区间票价景点之间的平均评价分
query = "SELECT "\
   " CASE "\
   "     WHEN price <= 50 THEN '低' "\
       " WHEN price <= 100 THEN '中' "\
      "  ELSE '高' "\
  "  END AS price_level, "\
    "AVG(averagescore) AS average_score "\
"FROM "\
"    priceAndCore "\
"GROUP BY "\
"    CASE "\
"        WHEN price <= 50 THEN '低' "\
"        WHEN price <= 100 THEN '中' "\
"        ELSE '高' "\
"    END"\

        # " LIMIT 5"\




cursor.execute(query)
tables = cursor.fetchall()
print('行数',len(tables))

# 打印数据库列表
for tables in tables:
    print(tables)


# 关闭连接
cursor.close()
conn.close()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue时间组件:Dayjs与Moment对比

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

FFmpeg初步了解

一、了解FFmpeg 1.1 什么是FFmpeg FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec&#xff0c;为了保证…

07_Response

文章目录 案例&#xff08;请求分发案例&#xff09; Response响应行响应头响应体特殊响应头refreshContent-typeContent-dispositionlocation 案例&#xff08;登录案例&#xff09; 案例&#xff08;请求分发案例&#xff09; 场景&#xff1a;有多个请求 Http://localhost:…

python Flask扩展:如何查找高效开发的第三方模块(库/插件)

如何找到扩展以及使用扩展的文档 一、背景二、如何寻找框架的扩展&#xff1f;三、找到想要的扩展四、找到使用扩展的文档五、项目中实战扩展 一、背景 刚入门python的flask的框架&#xff0c;跟着文档学习了一些以后&#xff0c;想着其实在项目开发中&#xff0c;经常会用到发…

设计模式之建造者模式精讲

也叫生成器模式。将一个复杂的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 在建造者模式中&#xff0c;有如下4个角色&#xff1a; 抽象建造者&#xff08;Builder&#xff09;&#xff1a;用于规范产品的各个组成部分&#xff0c;并进行抽象&…

HTTP请求走私!!!(一)

想都是问题&#xff0c;做才是答案 什么是请求走私&#xff1f; HTTP请求走私是针对于服务端处理一个或者多个接收http请求序列的方式&#xff0c;进行绕过安全机制&#xff0c;实施未授权访问一种攻击手段&#xff0c;获取敏感信息&#xff0c;并直接危害其他用户。 Web 应用…

集合系列(十五) -CopyOnWriteArrayList详解

一、摘要 在介绍 CopyOnWriteArrayList 之前&#xff0c;我们一起先来看看如下方法执行结果&#xff0c;代码内容如下&#xff1a; public static void main(String[] args) {List<String> list new ArrayList<String>();list.add("1");list.add(&quo…

RabbitMQ(简单模式)

2种远程服务调用 1openFeign&#xff1a; 优点&#xff1a;能拿到被调用的微服务返回的数据&#xff0c;系统系耦度高&#xff0c;系统稳定。 缺点&#xff1a;同步调用&#xff0c;如果有很多服务需要被调用&#xff0c;耗时长。 MQ,消息队列&#xff0c;RabbitMQ是消息we…

windows DNS 服务器常用配置

Windows Server 上的 DNS 服务器配置主要包括以下步骤和常见设置&#xff1a; 安装 DNS 服务 打开服务器管理器&#xff0c;在 "角色和功能" 添加或删除角色中安装 DNS 服务器角色。 配置 DNS 服务器基础设置 添加 DNS 区域&#xff1a; 在 DNS 管理器中&#xff…

WPF 窗体样式 WindowStyle 设置 none, 如何移动窗体

当窗体样式设为None时&#xff0c;因为标题栏被隐藏&#xff0c;我们无法移动窗体&#xff0c;为了使窗体可以移动&#xff0c;我们要为window中的布局控件添加MouseDown事件的事件处理器&#xff0c;并且要为其设置一个背景(window设置为允许透明&#xff0c;当grid没有背景时…

书籍推荐|meta分析R语言实践教程-Doing Meta-Analysis with R: A Hands-On Guide

“The problems are solved, not by giving new information, but by arranging what we have known since long.” – Ludwig Wittgenstein 推荐理由 《Doing Meta-Analysis with R: A Hands-On Guide》是由 Mathias Harrer, Pim Cuijpers, Toshi Furukawa, 和 David Ebert所…

Hides for Mac:应用程序隐藏工具

Hides for Mac是一款功能强大的应用程序隐藏工具&#xff0c;专为Mac用户设计。它能够帮助用户快速隐藏当前正在运行的应用程序窗口&#xff0c;保护用户的隐私和工作内容&#xff0c;避免不必要的干扰。 软件下载&#xff1a;Hides for Mac下载 Hides for Mac的使用非常简单直…

Windows下载使用nc(netcat)命令

‘nc’ 不是内部或外部命令&#xff0c;也不是可运行的程序&#xff1f; 点击链接地址&#xff0c;下载压缩包。 完成后解压 使用方式&#xff08;三种&#xff09;&#xff1a; 1、直接双击exe使用 2、把这个exe放到cmd启动的默认路径下 放到默认路径下&#xff0c;使用nc&a…

0.96寸OLED屏调试 ----(一)

所需设备&#xff1a; 1、USB 转 SPI I2C 适配器&#xff1b;内附链接 2、0.96寸OLED显示模块&#xff1b; 备注&#xff1a;专业版、升级版都适用&#xff1b; 首先介绍一下OLED显示模块&#xff0c;SSD1306是一款OLED驱动芯片&#xff0c;拥有最大128*64像素支持&#xff…

亚马逊云科技:基于老服务器打造的旧实例类型

内容摘要&#xff1a; 2021年&#xff0c;距离第一个EC2实例上线已经十五周年了。 在漫长的开发过程中&#xff0c;很多EC2实例自然会基于旧服务器构建。 随着时间的推移&#xff0c;旧的服务器总是需要更换硬件&#xff0c;实例也得更换&#xff0c;但并不是所有的用户都想迁…

腾讯云免费云服务器申请流程详解

随着云计算的普及&#xff0c;越来越多的企业和个人开始选择使用云服务器。腾讯云作为国内领先的云计算服务提供商&#xff0c;为用户提供了丰富的云产品和服务。本文将为大家详细介绍腾讯云免费云服务器的申请流程。 一、注册腾讯云账号 首先&#xff0c;需要注册一个腾讯云账…

【氮化镓】镁激活退火对p-GaN迁移率和阈值电压的影响

【Mg activation anneal of the p-GaN body in trench gate MOSFETs and its effect on channel mobility and threshold voltage stability】 文献总结&#xff1a; 本研究探讨了在沟道栅MOSFETs中&#xff0c;镁&#xff08;Mg&#xff09;激活退火步骤对p型氮化镓&#xf…

python opencv稍基础初学

傅里叶变换 傅里叶变换f​​​​​傅里叶分析之掐死教程&#xff08;完整版&#xff09;更新于2014.06.06 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/19763358 相当nice 傅里叶变换的作用 高频&#xff1a;变化剧烈的灰度分量&#xff0c;例如边界 低频&#xff1a;变…

如何使用极狐GitLab 自定义 Pages 根域名

本文作者&#xff1a;徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了极狐GitLab Pages …

【Ollama】AI大模型本地部署

Ollama Ollama轻量级、可扩展的框架&#xff0c;用于在本地机器上构建和运行大型语言模型&#xff08;LLM&#xff09;。提供了一个简单的API来创建、运行和管理模型&#xff0c;以及一个预构建模型库&#xff0c;可以轻松用于各种应用程序。 明显优势&#xff1a;易于使用、…