Hive 属于分布式存储使查询和管理大数据集的数据仓库软件,构建在Hadoop基础之上。
主要提供:
1、提供了简易的数据提取、转换、加载的工具。
2、提供了一种多种数据格式转换的机制。
3、通过MapReduce执行查询
4、通过HDFS或者HBASE访问存储的数据。
Hive提供了简单的类似SQL的查询语言,叫做QL。使用户用SQL查询数据,同时,允许熟悉MapReduce框架的开发者能自定义mappers和reducers以完成特定需求。QL可以使用scalar 语言函数、聚合、表来进行扩展。
HCatalog:是Hive的一个组件,它是一个表并分层存储管理hadoop数据为用户提供处理不同的数据的工具。
WebHCat:提供Hadoop MapReduce (or YARN),服务的工具,PIG,HIVE任务或Hive元数据操作都使用HTTP(REST 风格)接口。
Hive没有提供OLTP工作项也没有提供行更新和实时查询功能,主要用于批处理大量数据级,Hive具有可扩展、可延展、高容错性、输入格式松耦合。
主键设计原则:读的多尽量按时间先后顺序~写的多就用散列排序,避免热点效应(所有数据都写在一个region上) ,用散列~是为了负载均衡。
一、下载Hive稳定版
下载地址:
二、解压
$ tar -xzvf hive-x.y.z.tar.gz三、设置环境变量
指定hive的位置,
$ export HIVE_HOME={{pwd}}
$ export PATH=$HIVE_HOME/bin:$PATH
四、启动Hive
1、创建表前,先创建/tmp
and/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说明:目录需要一层一层的创建。2、启动hive$HIVE_HOME/bin/hive
五、日志
1、记录日志:
日志在0.13以前名字为.log,0.13以后日志为hive.log
/tmp/<user.name>/hive.log
2、启动后修改日志级别
bin/hive --hiveconf hive.root.logger=INFO,console //for HiveCLI (deprecated)
bin/hiveserver2 --hiveconf hive.root.logger=INFO,console
hive.querylog.location
property.
六、创建表
1、创建表teacher以,分割
hive> create table teacher(id bigint,name string) row format delimited fields terminated by '\t' STORED AS TEXTFILE;
OK Time taken: 1.592 seconds
2、向teacher表中插入数据
向teacher表插入数据
hive> load data local inpath '/home/duwei/Downloads/student.txt' into table teacher;
Loading data to table default.teacher Table default.teacher stats: [numFiles=1, totalSize=28] OK Time taken: 1.976 seconds
覆盖teacher表的数据,使用OVERWRITE关键字
hive> load data local inpath '/home/duwei/Downloads/student.txt' OVERWRITE into table teacher;数据文件格式:878887116 2 880606923 1 886397596 4 884182806 2 881171488 5 8916284673、查询表
查询所有表:show tables;
查询所有以s结尾的表:SHOW TABLES '.*s';4、描述表
ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment');6、替换字段名称,即改变表结构,而不改变数据
ALTER TABLE invites REPLACE COLUMNS (foo INT, bar STRING, baz INT COMMENT 'baz replaces new_col2');7、删除表
hive-default.xml 中配置 javax.jdo.option.ConnectionURL 设置元数据文件位置 ./metastore_db
八、查询数据
1、从分区d
hive> SELECT a.foo FROM invites a WHERE a.ds='2008-08-15';
2、从invites表中查的数据插入到HDFS的hdfs_out文件中,覆盖原来的数据
hive> INSERT OVERWRITE DIRECTORY '/tmp/hdfs_out' SELECT a.* FROM invites a WHERE a.ds='2008-08-15';
3、group by 语句
hive> FROM invites a INSERT OVERWRITE TABLE events SELECT a.bar, count(*) WHERE a.foo > 0 GROUP BY a.bar; hive> INSERT OVERWRITE TABLE events SELECT a.bar, count(*) FROM invites a WHERE a.foo > 0 GROUP BY a.bar;4、joinhive> FROM pokes t1 JOIN invites t2 ON (t1.bar = t2.bar) INSERT OVERWRITE TABLE events SELECT t1.bar, t1.foo, t2.foo;5、多表插入FROM src INSERT OVERWRITE TABLE dest1 SELECT src.* WHERE src.key < 100 INSERT OVERWRITE TABLE dest2 SELECT src.key, src.value WHERE src.key >= 100 and src.key < 200 INSERT OVERWRITE TABLE dest3 PARTITION(ds='2008-04-08', hr='12') SELECT src.key WHERE src.key >= 200 and src.key < 300 INSERT OVERWRITE LOCAL DIRECTORY '/tmp/dest4.out' SELECT src.value WHERE src.key >= 300;