Python使用Hive查询数据

背景

在大数据的处理过程中,目前最流行的开源框架无非就是hadoop体系,那说到Hadoop 最核心的两个部分无非就是HDFS、MapReduce,前者主要是用来存储数据,后者则是用来计算处理数据的,在此基础上如果要处理海量的数据就必须要基于此进行创建mapper、reduce、partition、job驱动等操作,这样一套流程下来,开发人员是不是很头大,为什么呢 工作繁琐开发效率太低,那有没有更好的简单的解决方案呢? 还真有,推荐使用Facebook开源的Hive

Hive是什么呢? 其实就是针对MapReduce进行了二次封装,方便开发人员通过大家熟悉的SQL脚本来便捷的操作Hadoop集群上的数据,基本的工作流程是开发人员首先编写要操作数据的SQL,其次连接上Hive,然后Hive会将你书写的SQL转为MapReduce任务,最后这些任务会在Hadoop集群上运行,具体流程如下:
在这里插入图片描述

具体实现

实现方案

本文介绍主要是使用python开发语言实现,其他语言可以参考对应的官方API文档

基于此,我们首先需要安装Hive的环境,其次客户端代码需要引入hive驱动包
安装Hive环境不在本篇文章介绍,本文侧重点于客户端代码怎么实现操作hive的流程

引入hive包
$pip3 install pyhive

示例代码

from pyhive import hive

class HiveUtils:

    def query_count_data(self,query_count_sql,sql_config):
        '''
        统计表总条数
        '''

        logger.info('query_sql:%s',query_count_sql)

        hive_conn = self.__get_connection(sql_config)  
        
        hive_cursor = hive_conn.cursor()

        hive_cursor.execute(query_count_sql)
        list_res = hive_cursor.fetchall()

        total_count = list_res[0][0]

        logger.info('get total_count:%s',total_count)

        hive_cursor.close()
        hive_conn.close()

        return total_count

    @retry(stop=stop_after_attempt(5), wait=wait_fixed(10))
    def __get_connection(self,sql_config):
        '''
        连接不上时重试5次,每次重试延时10秒
        '''
        logger.info('start to connect to hive ...')
        hive_connection = hive.Connection(host=sql_config.host 
        , port=sql_config.port
        , username=sql_config.user_name
        , database=sql_config.db_name)

        logger.info('connect to hive successful!')

        return hive_connection

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值