大数据-玩转数据-hive简单应用
一、介绍:
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
各组件的基本功能
1.) 用户接口主要由三个:CLI、JDBC/ODBC和WebGUI。其中,CLI为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。
2.)元数据存储:Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。通常是存储在关系数据库如 mysql , derby中。
3.)解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。
hive使用方式
首先确保 hadoop平台已经启动,mysql数据库已经启动
hive的元数据库默认是derby,一次只能打开一个会话;若要支持多个用户同时访问,则需要选择一个独立的元数据库,常见的都选择mysql。
确保元数据管理服务metastore服务已经启动:
[root@hadoop1 ~]# nohup hive --service metastore > metastore.log >2&1 &
到远程客户端(比如 Tableau)连接到hive数据库,还需要启动hive service:
[root@hadoop1 ~]# nohup hive --service hiveserver2 > hiveserver2.log 2>&1 &
[root@hadoop1 ~]# jps
检查相关进程
[root@hadoop1 ~]# ps -aux| grep hiveserver2
[root@hadoop1 ~]# ps -aux| grep metastore
使用 kill -9 进程id 退出
1、Hive交互shell使用
配置过环境变量,可以直接在命令行中输入
[root@hadoop1 ~]# hive
在别的节点上用beeline去连接
分布连接
[root@hadoop1 ~]# hive/bin/beeline
[root@hadoop1 ~]# beeline>!connect jdbc:hive2://192.168.80.2:1000
回车后输入用户密码登录
或者启动就连接
[root@hadoop1 ~]# bin/beeline -u jdbc:hive2://hadoop01:10000 -n hadoop
应用具体实例
1、 创建内部表test
hive> create table if not exists test(id int,name string)
row format delimited fields terminated by '\t' ;
示例, 显示如下:
登录数据库查看
[root@hadoop1 conf]# mysql -uhive -p
输入密码登录
查看表内容
mysql> use hive
mysql> show tables;
mysql> select * from TBLS;
2、 创建外部表pageview。
hive> create external table if not exists pageview(
> pageid int,
> page_url string comment 'The page URL'
> )
> row format delimited fields terminated by '/t'
> location 'hdfs://192.168.158.171:9000/user/hivewarehouse/';
3、 创建分区表invites。
hive> create table student_p(
> Sno int,
> Sname string,
> Sex string,
> Sage int,
> Sdept string)
> partitioned by(part string)
> row format delimited fields terminated by ','stored as textfile;
4、 创建带桶的表student。
hive> create table student(id int,age int,name string)
> partitioned by