赞
踩
Apache Hive是一个数据仓库。数据仓库和数据库的区别在于,数据仓库的数据是长期不变的,而数据库的数据需要经常修改。
Hive可以用SQL语法来读取、写入和管理驻留在分布式存储的大数据。Hadoop本来是要手写MapReduce的,但是自从出现了Hive,一些简单的mapreduce就可以通过hive的SQL自动生成,降低了开发难度,而且SQL比MapReduce简洁,易懂。
Hive建立与Hadoop之上,它提供以下功能
Hive的SQL还可以通过用户定义函数(UDFs)、用户定义聚合(UDAFs)和用户定义表函数(UDTFs)用用户代码进行扩展。
要求环境:
稳定版Hive的安装
tar -xzvf hive-x.y.z.tar.gz
cd hive-x.y.z
export HIVE_HOME={{pwd}}
export PATH=$HIVE_HOME/bin:$PATH
Hive是基于Hadoop的,所以:
你必须在环境变量中配置Hadoop目录
export HADOOP_HOME=<hadoop-install-dir>
此外,你必须启动Hadoop的HDFS,并创建/tmp和/user/hive/warehouse(又叫做hive.metastore.warehouse.dir),并赋予这两个文件夹权限,这样才能够在hive中创建表
$ $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放进环境变量里面很有用,尽管这不是必要的。
$ export HIVE_HOME=<hive-install-dir>
注意:使用Hive前要把Hadoop启动了
CLI:command line interface(命令行接口)
$HIVE_HOME/bin/hive
从hive2.1开始,我们需要运行下面的schematool命令作为初始化步骤。例如,我们可以使用“derby”作为db类型。
$HIVE_HOME/bin/schematool -dbType <db type> -initSchema
HiveServer2(在hive0.11中引入)有自己的CLI,称为Beeline。HiveCLI现在不赞成使用,而应该使用Beeline,因为HiveCLI缺乏HiveServer2的多用户、安全性和其他功能。要从shell运行HiveServer2和Beeline:
$ $HIVE_HOME/bin/hiveserver2
$ $HIVE_HOME/bin/beeline -u jdbc:hive2://$HS2_HOST:$HS2_PORT
Beeline由HiveServer2的JDBC URL启动,这取决于HiveServer2启动的地址和端口。默认情况下,它将是(localhost:10000),所以地址看起来像jdbc:hive2://localhost:10000.
或者在相同的过程中启动Beeline和HiveServer2以进行测试,以获得与HiveCLI类似的用户体验:
$ $HIVE_HOME/bin/beeline -u jdbc:hive2://
默认配置<install-dir>/conf/hive-default.xml
环境变量/etc/profile
详细配置<install-dir>/conf/hive-site.xml
Log4j日志配置<install-dir>/conf/hive-log4j.properties
Hive默认集成Hadoop的配置
默认的log4j日志存在/tmp/<user.name>/hive.log
要配置不同的日志位置,在$HIVE_HOME/conf/hive-log4j.properties中配置hive.log.dir即可
为了确保目录能够使用(chmod 1777 <dir>)
hive.log.dir=<other_location>
如果用户愿意,可以通过添加以下参数将日志发送到控制台:
bin/hive --hiveconf hive.root.logger=INFO,console //for HiveCLI (deprecated)
bin/hiveserver2 --hiveconf hive.root.logger=INFO,console
hive> CREATE TABLE pokes (foo INT, bar STRING);
hive> CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);
hive> SHOW TABLES;
列出所有表
列出以“s”结尾的所有表。模式匹配遵循Java正则表达式。查看此链接以获取文档
hive> SHOW TABLES '.*s';
显示列信息
hive> 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替换所有现有列并且只改变表的结构,而不会改变数据。REPLACE COLUMNS还可以用来从表结构中删除列
hive> ALTER TABLE invites REPLACE COLUMNS (foo INT COMMENT 'only keep the first column');
删除表
hive> DROP TABLE pokes;
UMNS替换所有现有列并且只改变表的结构,而不会改变数据。REPLACE COLUMNS还可以用来从表结构中删除列
```sql
hive> ALTER TABLE invites REPLACE COLUMNS (foo INT COMMENT 'only keep the first column');
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。