hive蜂巢入门


备注

  • Hive是一个建立在Hadoop之上的数据仓库工具。
  • 它提供了一种类似SQL的语言来查询数据。
  • 我们可以在Hive中运行几乎所有的SQL查询,唯一的区别是,它在后端运行map-reduce作业以从Hadoop Cluster获取结果。因为这个Hive有时需要更多时间来获取结果集。

在Linux中使用外部Metastore进行Hive安装

先决条件:

  1. Java 7
  2. Hadoop(请参阅此处了解Hadoop安装)
  3. Mysql Server和Client

安装:

步骤1:从下载页面下载最新的Hive tarball。

第2步:解压缩下载的tarball( 假设: tarball在$ HOME中下载

tar -xvf /home/username/apache-hive-x.y.z-bin.tar.gz
 

第3步:更新环境文件( ~/.bashrc

export HIVE_HOME=/home/username/apache-hive-x.y.z-bin
export PATH=$HIVE_HOME/bin:$PATH
 

获取文件以设置新的环境变量。

source ~/.bashrc
 

步骤4:从此处下载mysql的JDBC连接器并将其解压缩。

tar -xvf mysql-connector-java-a.b.c.tar.gz
 

解压缩的目录包含连接器jar文件mysql-connector-java-abcjar 。将其复制到$HIVE_HOMElib

cp mysql-connector-java-a.b.c.jar $HIVE_HOME/lib/
 

组态:

$HIVE_HOME/conf/ 目录下创建配置单元文件hive-site.xml ,并添加以下与Metastore相关的属性。

<configuration>
   <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://localhost/hive_meta</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>mysqluser</value>
       <description>username to use against metastore database</description>
   </property> 
   
   <property>
       <name>javax.jdo.option.ConnectionPassword</name> 
       <value>mysqlpass</value>
       <description>password to use against metastore database</description>
   </property> 

   <property>
       <name>datanucleus.autoCreateSchema</name>
       <value>false</value> 
   </property> 

   <property>
       <name>datanucleus.fixedDatastore</name>
       <value>true</value>
   </property>
</configuration>
 

在属性中相应地更新MySQL“用户名”和“密码”的值。

创建Metastore架构:

$HIVE_HOME/scripts/metastore/upgrade/mysql/ 下可以获得Metastore模式脚本

登录MySQL并获取架构,

mysql -u username -ppassword

mysql> create database hive_meta;
mysql> use hive_meta;
mysql> source hive-schema-x.y.z.mysql.sql;
mysql> exit;
 

启动Metastore:

hive --service metastore
 

要在后台运行它,

nohup hive --service metastore &
 

启动HiveServer2 :(如果需要,使用)

hiveserver2
 

要在后台运行它,

nohup hiveserver2 metastore &
 

注意:这些可执行文件在$HIVE_HOME/bin/ 下可用

连接:

使用hivebeelineHue与Hive连接。

不推荐使用Hive CLI,建议使用Beeline或Hue。

Hue的其他配置:

$HUE_HOME/desktop/conf/hue.ini 更新此值

[beeswax] 
    hive_conf_dir=/home/username/apache-hive-x.y.z-bin/conf
 

安装Hive(linux)

首先从https://hive.apache.org/downloads.html下载最新的稳定版本

- >现在解压缩文件

$ tar -xvf hive-2.xy-bin.tar.gz

- >在/ usr / local /中创建一个目录

$ sudo mkdir / usr / local / hive

- >将文件移动到root

$ mv~ / Downloads / hive-2.xy / usr / local / hive

- >在.bashrc中编辑hadoop和hive的环境变量

$ gedit~ / .bashrc

像这样

export HIVE_HOME = / usr / local / hive / apache-hive-2.0.1-bin /

export PATH = $ PATH:$ HIVE_HOME / bin

export CLASSPATH = $ CLASSPATH:/ usr / local / Hadoop / lib / *:。

export CLASSPATH = $ CLASSPATH:/usr/local/hive/apache-hive-2.0.1-bin/lib/*:。

- >现在,如果它还没有运行,请启动hadoop。并确保它正在运行且不处于安全模式。

$ hadoop fs -mkdir / user / hive / warehouse

目录“仓库”是存储与hive相关的表或数据的位置。

$ hadoop fs -mkdir / tmp

临时目录“tmp”是存储处理的中间结果的临时位置。

- >设置对这些文件夹进行读/写的权限。

$ hadoop fs -chmod g + w / user / hive / warehouse

$ hadoop fs -chmod g + w / user / tmp

- >现在在控制台中使用此命令启动HIVE

$ hive

Hive中的字数计数示例

文档文件(输入文件)

玛丽有只小羊羔

它的羊毛像雪一样白

玛丽去的地方

羔羊肯定会去的。

Hive查询

CREATE TABLE FILES (line STRING);

LOAD DATA INPATH 'docs' OVERWRITE INTO TABLE FILES;

CREATE TABLE word_counts AS
SELECT word, count(1) AS count FROM
(SELECT explode(split(line, ' ')) AS word FROM FILES) w
GROUP BY word
ORDER BY word;
 

在Hive中输出word_counts表

玛丽,2

有,1

一个,1

小,1

羊肉,2

其1

摇粒绒,1

是,2

白色,1

如,1

雪,1

并且,1

无处不在,1

即,1

所到之处,1

的,1

肯定的是,1

于1

走,1