美文网首页
搭建Hive数据仓库+python操作Hive

搭建Hive数据仓库+python操作Hive

作者: Byte猫 | 来源:发表于2019-04-02 12:29 被阅读0次

    一、Hive安装及服务启动

    Hive是基于Hadoop的数据仓库解决方案。由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性。
    简单来说,Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样就使得数据开发和分析人员很方便的使用SQL来完成海量数据的统计和分析,而不必使用编程语言开发MapReduce那么麻烦。

    1、Hive下载

    下载安装文件

    2、解压安装文件并修改配置

    (1)解压安装文件
    解压安装文件到指定的的文件夹 /opt/hive

    tar -zxf apache-hive-2.3.4-bin.tar.gz -C  opt/hive
    

    (2)设置环境变量

    vi /etc/profile
    

    在最下面添加

    export HIVE_HOME=/opt/hive
    export PATH=$HIVE_HOME/bin:$PATH
    

    (3)Hive集成mysql数据库
    由于hive是默认将元数据保存在本地内嵌的 Derby 数据库中,但是这种做法缺点也很明显,Derby不支持多会话连接,因此本文将选择mysql作为元数据存储。
    Hive集成mysql数据库
    (4)修改安装目录下的conf/hive-site.xml文件(主要是与mysql的连接部分)

    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>  <!-- jdbc驱动 -->
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>  <!-- mysql账号 --> 
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive-password</value>  <!-- mysql密码 --> 
    </property>
    

    (5)修改hive-env.sh

    cp hive-env.sh.template hive-env.sh
    vi hive-env.sh
    

    添加HADOOP_HOME配置

    HADOOP_HOME=/opt/hadoop/hadoop-2.6.4
    

    3、启动Hive

    启动Hive的几种方式

    二、PyHive安装

    方法一:

    pip install sasl
    pip install thrift
    pip install thrift-sasl
    pip install PyHive
    

    方法二(推荐):

    conda install PyHive
    

    三、PyHive操作Hive数据仓库

    连接数据库

    from pyhive import hive
    
    conn = hive.Connection(host='192.168.**.**', port=10000, username='****', database='default')
    # host主机ip,port:端口号,username:用户名,database:使用的数据库名称
    cursor = conn.cursor()
    

    执行查询操作

    cursor.execute('select * from tablename limit 10')
    for result in cursor.fetchall():
         print(result)
    

    相关文章

      网友评论

          本文标题:搭建Hive数据仓库+python操作Hive

          本文链接:https://www.haomeiwen.com/subject/kjnwbqtx.html