• hive3.12本地安装测试简记


    前置条件:

    依赖jdk,请下载jdk8并解压

    依赖hadoop,请首先下载hadoop并解压

    step1/hive metastore建议使用mysql进行存储,
    安装mysql这一步忽略,请自行安装,如果使用docker,可以使用一句docker run解决。
    创建hive用户密码和数据库。
    mysql
    grant all privileges on *.* to hive@'%' identified by 'hive';
    flush privileges ;
    step2//下载hive3.1.2版本并解压配置
    #####conf
    配置hive-site.xml log4j and hive-env.sh
    HIVE_HOME/conf下面操作
    cp hive-log4j2.properties.template hive-log4j2.properties
    这样可以后续找到hive.log文件,查看安装使用过程中可能出现的错误,
    通过日志解决问题是非常非常重要的。
    property.hive.log.dir = /var/log/hive

    配置hive-site.xml

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    
    
    <configuration>
    
     <property>
          <name>hive.exec.scratchdir</name>
          <value>/tmp/hive/stage/</value>
        </property>
    
        <property>
          <name>hive.metastore.warehouse.dir</name>
          <value>/Users/student2020/data/hive/</value>
        </property>
    
    
        <property>
          <name>hive.metastore.uris</name>
          <value>thrift://127.0.0.1:9083</value>
        </property>
    
    
        <property>
          <name>javax.jdo.option.ConnectionDriverName</name>
          <value>com.mysql.jdbc.Driver</value>
        </property>
    
        <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://127.0.0.1:13306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
        </property>
    
        <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>hive</value>
        </property>
    
        <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>hive</value>
        </property>
    
    
        <property>
          <name>hive.server2.thrift.bind.host</name>
          <value>127.0.0.1</value>
        </property>
    
        <property>
          <name>hive.server2.thrift.port</name>
          <value>10000</value>
        </property>
    
        <property>
            <name>hive.metastore.event.db.notification.api.auth</name>
            <value>false</value>
        </property>
    
        <property>
            <name>hive.server2.active.passive.ha.enable</name>
            <value>true</value>
        </property>
    
    
    
    <property>
        <name>hive.support.concurrency</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.exec.dynamic.partition.mode</name>
        <value>nonstrict</value>
    </property>
    <property>
        <name>hive.txn.manager</name>
        <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
    </property>
    <property>
        <name>hive.compactor.initiator.on</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.compactor.worker.threads</name>
        <value>1</value>
    </property>
    
    
    
    </configuration>
    


    配置hive-env.sh
    配置JAVA_HOME=/PATH/TO/JDK
        HADOOP_HOME=/PATH/TO/HADOOP3
        
    step3//使用hive自带的工具初始化metastore需要的表
    ##### cd /hive/bin
    schematool -dbType mysql -initSchema -verbose
    step4//启动hive metastore and hiveserver2(服务于beeline和jdbc访问的方式)
    ###启动hive metastore
    export HIVE_HOME=/Users/student2020/app/hive312/
    export PATH=$PATH:$HIVE_HOME/bin
    hive --service metastore  -hiveconf hive.log.file=metastore.log  &
    ####启动hive server2
    hive --service hiveserver2 &

    可以通过 查看 hive.log,检查可能出现的错误,根据错误提示查找解决方案。


    经过这次练习,可以知道 hive本地运行可以不启用hdfs服务,但是需要有hadoop的编译后的包,
    需要配置hadoop_home的环境变量,因为hive的查询要转为mr,是需要使用hadoop
    相关的jar包的。
    编缉一个csv文件做数据测试。
    create table test_csv (id int,name string,age int) row format delimited fields terminated by ',' stored as textfile;
    load data local inpath '/Users/student2020/data/stage/test.csv' into table test_csv;
    select * from test_csv;
    查询成功.

    测试一下Acid表。3.x新版本的hive不需要对表强制进行分桶即可以使用transcion事务。

    CREATE TABLE employee (id int, name string, salary int)

    STORED AS ORC TBLPROPERTIES ('transactional' = 'true');

    INSERT INTO employee VALUES(

    (1, 'Jerry', 5000),

    (2,'Jecky',5700)

    )

    update employee set salary=1000 where id=3;

    delete from employ where id=2;

    操作成功,如果操作失败,请去hive.log中查看可能的错误。

    已知的问题是hive3.1.2.搭配hadoop2.7.x会有更新失败的问题。

  • 相关阅读:
    30个php操作redis经常用法代码样例
    Android语音播报、后台播报、语音识别
    Gym 100733J Summer Wars 题解:灵活运用扫描线的思想
    如何运营一个软件微社区
    关于迭代测试的一些思考
    DirectUI界面编程(五)WindowImplBase的使用
    Zxing实现在线二维码生成程序
    Java二维码生成与解码工具Zxing使用
    DirectUI界面编程(四)界面布局详解
    软件开发中的资源管理
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/12159484.html
Copyright © 2020-2023  润新知