当前访客身份:游客 [ 登录  | 注册加入尚学堂]
启用新域名sxt.cn
新闻资讯

Hive入门指南

我来了! 发表于 2年前  | 评论(0 )| 阅读次数(1146 )|   0 人收藏此文章,   我要收藏

简介

Apache 顶级项目Hive数据仓库软件便于查询和管理驻留在分布式存储上的大型数据集.他提供了:

  • 能够进行简单的数据提取/转换/加载(ETL)的工具
  • 一种使各种各样的数据格式结构化的机制
  • 访问直接存储在Apache HDFS上的文件或者其他数据存储系统上的文件例如的Apache HBase
  • 通过MapReduce执行查询

Hive定义了一种简单的类似SQL的语言,叫做QL。它使熟悉SQL语句的用户可以查询数据。同时,这种语言也可以使熟悉MapReduce框架 的编程人员通过插入他们自定义的map和reduce来执行更加复杂的这种语言内置功能不支持的复杂分析。QL也可以使用自定义的标量函数 (UDF's),聚合函数(UDAF's)和表函数(UDTF's)扩展。

Hive并不强制数据读写使用“Hive format”–没有这样的事。Hive在Thrift上工作的同样很好,控制分离,或者你的特殊的数据格式。Please see File Formats and Hive SerDe in the Developer Guide for details.

Hive的设计不适合OLTP,也没有提供实时的查询和row级别的更新。它最擅长用于大型仅追加的数据集(就像web日志)的批量job。 Hive最看重的是他的伸缩性(使用更多的及其动态的添加到Hadoop集群进行扩展),可扩展性(使用MapReduce框架和UDF/UDAF /UDTF),容错性,和对于他的输入格式的低耦合行。

Hive的组建包括HCatalog和WebHCat,HCatalog是Hive的一个组件。它是Hadoop的一个表和存储管理层,是用户能够使用不同的数据处理工具,包括Pig和MapReduce,来更加方便的在Grid上读写数据。

WebHCat提供一个服务,你可以使用它运行Hadoop MapReduce(或者YARN),Pig,Hive job,或者使用HTTP(RESTFul风格)接口执行Hive元数据操作。

安装和配置

你可以通过下载压缩包安装Hive的稳定版本,或者你可以下载Hive的源代码并从中构建Hive。

必要条件

  • Java 1.6
  • Hadoop 0.20.x, 0.23.x, or 2.0.x-alpha

从一个稳定的版本安装Hive

首先从Apache的下载镜像下载Hive最新的稳定版本。

接下俩你需要解压压缩包,浙江创建一个命名为hive-x.y.z(x.y.z是稳定版版本)的子目录。

tar -xzvf hive-x.y.z.tar.gz

设置环境变量HIVE_HOME 指向这个安装目录。

cd hive-x.y.z
export HIVE_HOME={{pwd}}

最后,添加$HIVE_HOME/bin到你的PATH

export $PATH:$HIVE_HOME/bin

运行Hive

Hive使用Hadoop,所以:

  • 你需要添加Hadoop到你的PATH,或者
  • export HADOOP_HOME=

此外,在你zaiHive中创建一个表之前,你必须在HDFS中创建/tmp和/user/hive/warehouse并且设置它们chmod g+w。

进行此设置的命令:

$ $HADOOP_HOME/bin/hadoop fs -mkdir /tmp
$ $HADOOP_HOME/bin/hadoop fs -mkdir /user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse

你将会发现设置HIVE_HOME是有用的,虽然他不是必需的。

$ export HIVE_HOME=

在shell下使用Hive的命令行接口(CLI):

$ $HIVE_HOME/bin/hive

DDL操作

Hive的DDL操作都记录在 Hive Data Definition Language.

创建Hive表

CRATE TABLE pokes (foo INT,bar STRING);

创建一个拥有两列的叫做pokes的表,第一列是一个integer,第二列是一个String。

CREATE TABLE invites(foo INT ,bar STRING) PARTITIONED BY (ds STRING);

创建一个表invites,它有两列和一个叫做ds的分区列。分区列是一个虚拟的列。它不是数据自身的一部分,而是来自一个特殊的数据集被加载到分区。

默认情况下,表设定输入格式为text,分隔符假定为^A(ctrl-a).

浏览表

SHOW TABLES;

列出所有表。

SHOW TABLES '.*S';

列出所有以s结尾的表。这里的匹配模式遵循JAVA正则表达式。查看这个链接的文档:http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html.

DESCRIBE invites;

显示表的列的列表。

修改和删除表

表名可以被改变,列可以添加或者替换。

hive> ALTER TABLE events RENAME TO 3koobecaf;
hive> ALTER TABLE pokes ADD COLUMNS (new_col INT);
hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');
hive> ALTER TABLE invites REPLACE COLUMNS (foo INT, bar STRING, baz INT COMMENT 'baz replaces new_col2');

注意REPLACE COLUMNS 替换所有已存在的列并且只改变表结构,不改变表数据。表必须使用本地的SerDe。REPLACE COLUMNS也可以用于从表结构中删除列。

hive> ALTER TABLE invites REPLACE COLUMNS (foo INT COMMENT 'only keep the first column');

删除表

hive> DROP TABLE pokes;

元数据存储

元数据存储在一个迁入的Derby数据库中,它的磁盘位置取决于Hive配置文件中的变量: javax.jdo.option.ConnectionURL.默认情况下,这个位置是./metastore_db(看conf/hive-default.xml)

现在,在默认配置下,元数据只能在某一时刻被某一用户访问。

元数据可以存储在任何支持JPOX的数据库中。

DML操作

SQL操作

简单的用户使用案例

分享到:0
关注微信,跟着我们扩展技术视野。每天推送IT新技术文章,每周聚焦一门新技术。微信二维码如下:
微信公众账号:尚学堂(微信号:bjsxt-java)
声明:博客文章版权属于原创作者,受法律保护。如果侵犯了您的权利,请联系管理员,我们将及时删除!
(邮箱:webmaster#sxt.cn(#换为@))
北京总部地址:北京市海淀区西三旗桥东建材城西路85号神州科技园B座三层尚学堂 咨询电话:400-009-1906 010-56233821
Copyright 2007-2015 北京尚学堂科技有限公司 京ICP备13018289号-1 京公网安备11010802015183