zoukankan      html  css  js  c++  java
  • hive安装及配置

    
    

    1.下载地址: http://www.apache.org/dyn/closer.cgi/hive/

    2.解压

    3.hive配置
      1.修改hive-env.sh,添加如下信息

    export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.5
    export JAVA_HOME=/usr/local/java/jdk1.8.0_121
    export HIVE_HOME=/usr/local/hive/apache-hive-1.2.2-bin

      2.修改hive-site.xml

    cp hive-default.xml.template hive-site.xml
    删除原有数据,添加如下数据

    <property>

    <name>javax.jdo.option.ConnectionURL</name>

    <value>jdbc:mysql://hotname:3306/hive?user=hive?createDatabaseIfNotExist=true</value>

    <description>JDBC connect string for a JDBC metastore</description>
    </property>

    <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
    </property>

    <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>username to use against metastore database.hive连接数据库用户名</description>
    </property>

    <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database.hive连接数据库密码</description>
    </property>

      3.将mysql.jar拷贝到hive的lib目录下

      4.解决jline版本不一致问题,将hive中的jline拷贝到share/hadoop/yarn/lib/下.如果不处理将会报错:Found class jline.Terminal, but interface was expected

      4.1 初始化mysql:  sh schematool -dbType mysql -initSchema

      5.启动hive

        1. bin/hive

        2.将hive启动成服务:./bin/hiveserver2

        3.使用客户端连接hive

          ./bin/beeline

          !connect jdbc:hive2://localhost:10000

      6.Hive的数据存储:

        1、Hive中所有的数据都存储在 HDFS 中,没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)
        2、只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。
        3、Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket。
          db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹
          table:在hdfs中表现所属db目录下一个文件夹
          external table:外部表, 与table类似,不过其数据存放位置可以在任意指定路径
        普通表: 删除表后, hdfs上的文件都删了
        External外部表删除后, hdfs上的文件没有删除, 只是把文件删除了


        partition:在hdfs中表现为table目录下的子目录(提高查询效率),比如日志流量按天分,需要查询某一天的,那么查询效率就很高。
        bucket:桶, 在hdfs中表现为同一个表目录下根据hash散列之后的多个文件, 会根据不同的文件把数据放到不同的文件中 (创建表可以指定为分桶表,一个reduce对对应一个表,提高join。Id相同在同一个桶,在join的时候不要做笛卡儿积了)

       https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark:+Getting+Started

      

      7. hive客户端:SQuirrel SQL Client

        http://squirrel-sql.sourceforge.net/


    创建表报错:

    Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. 
    MetaException(message:For direct MetaStore DB connections, we don't support retries at the client level.) (state=08S01,code=1)

    我在创建数据库时,字符集设置为UTF8,这里需要配置mysql的字符集:(如果不行要删了数据库重新创建)

     alter database hive character set latin1;

    将hdfs数据load进表:

     load data inpath '/weblog/pre/' overwrite into table ods_weblog_origin partition (datestr='2017-06-19');

    1.将数据put到hdfs,这里如果存在crc文件,那么需要保证原文件未被修改过,否则put过程报错

    2.hive load数据报 无权限 错误: hadoop fs -chmod -R 755 /weblog

    3.每次load之后,hdfs中的文件将会被删除

       

        

  • 相关阅读:
    【opencv.js】将图片转换为灰度图
    【快速创建】第一个 opencv.js 项目
    【踩坑无数】Anaconda(2020.02) + Tensorflow2.1 + python3.7 (CPU版本)的安装
    Thread的join方法
    常用语句
    获取当前托管线程的唯一标识符
    修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限(转载)
    C#中Monitor和Lock以及区别(转载)
    LIBRA查询
    Select()和SelectMany()的区别
  • 原文地址:https://www.cnblogs.com/0xcafedaddy/p/6734237.html
Copyright © 2011-2022 走看看