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中的文件将会被删除

 

 

 

 

 

 

 

   

    

posted @ 2017-04-21 20:27  0xcafedaddy  阅读(187)  评论(0编辑  收藏  举报