Hive入门

/ Hive / 没有评论 / 59浏览

更高效的wordcount。

前面学习了Hadoop的基础知识,编写了wordcount程序,了解了MR分而治之的思想。但MR编写起来较复杂,因此Hive通过编写SQL,将SQL解析为MR,让开发更高效。

Hadoop基础

首先了解如下的知识:

Hive入门

安装hive前提是要先安装hadoop集群,并且hive只需要再hadoop的namenode节点集群里安装即可(需要在所有namenode上安装),可以不在datanode节点的机器上安装。

环境搭建

参考:

基本知识

创建数据库

create database test;

创建完之后,会在HDFS的/user/hive/warehouse/中生成一个test.db文件夹。 test.db

创建表

语法:

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
[(col_name data_type [COMMENT col_comment], ...)] 
[COMMENT table_comment] 
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] 
[CLUSTERED BY (col_name, col_name, ...) 
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
[ROW FORMAT row_format] 
[STORED AS file_format] 
[LOCATION hdfs_path]

实例:

create table t_order(id int, name string, price double) 
row format delimited fields terminated by '\t';

创建完后,/user/hive/warehouse/下会多一个t_order文件夹

Partition

如果文件很大,用分区表可以快过滤出按分区字段划分的数据。

下面按照年份分区,当查询某个年份的数据,就会很快了。

create table t_book(id int, name string, price double)
partitioned by (year int)
row format delimited fields terminated by '\t';

导入数据:

load data local inpath '/usr/local/hive/book.txt' overwrite into table t_book
partition(year=2018);

alt

基本CRUD

注意,hive不支持更新。

参考: