标签:oca 多级 最好 原理 访问 通过 comment root 外部表
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL进行数据读取、写入和管理。
hive的各个组成部分介绍:
a、Hive的数据是存放在Hadoop之上的;
b、Hive的数据分为两个部分:数据+元数据;元数据是记录数据的数据,这里记录着表的列和分区及其在hadoop的目录。
c、Hive将SQL进行解析,然后开启MR任务在Hadoop上运行。
hive的执行引擎包括:MapReduce、Tez和Spark;只要通过一个参数就能够切换底层的执行引擎。
1)元数据库连接配置
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://XXX:3306/databaseName?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
2)显示当前使用数据库和表结构名称配置
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
3)也可以使用set hive.cli.print.current.db = true的方式,使之在当前界面生效。
a、Create database if not exists test;
自己创建的数据库,默认存放在:/user/hive/warehouse/test.db目录中
b、创建数据库,同时制定目录
create database if not exists test location ‘/test/directory’;
c、创建数据库,同时添加描述信息
create database if not exists test comment ‘this is a database’ With DBPROPERTIES(‘creator‘=‘me‘,‘date‘=‘9012-12-17‘)
数值类型:int bigint float double decimal
字符串类型:Stirng 90%
布尔类型: boolean:true false
日期类型:date timestamp
Hive的表格分为内部表和外部表。
内部表删除时:HDFS的数据和Meta都会被删除;
外部表删除时:HDFS的数据不会被删除,只是Meta上的数据会被删除,安全起见,最好创建外部表。
a、创建外部表的格式
create external table emp_external (empno int,ename string,job string,mgr int,hiredate string,sal double, comm double,deptno int) row format DELIMITED FIELDS TERMINATED BY ‘\t‘ Location ‘/test/externaltable/emp‘;
加载数据到外部表
Load data Local inpath ‘/home/hadoop/data/emp.txt‘ into table emp;
b、创建内部表
create table order_partition(order_no string,event_time string) partitioned by(event_month string)ROW Format Delimited Fields terminated By ‘\t‘;
Load DATA Local inpath ‘/home/hadoop/data/order_created.txt‘ Into table order_partition PARTITION(event_month=‘2015-05‘);
Alter table order_partition ADD if not exists Partition(event_month=‘2015-07‘);
create table order_mulit_partition(order_no String,event_time string) Partition by(event_month String,step String) Row format Delimited Fields Terminated By ‘\t‘;
Load Data Local Inpath ‘/home/hadoop/data/order_mulit_partition Into Table order_mulit_partition Partition(event_month=‘2014-06‘,step=‘2‘);
Create table emp_parititon(empno int,ename string,job string,mgr int,hiredate string,sal double,comm double) Partition By(deptno int) Row Format Delimited Fields Terminated By ‘\t‘;
Insert Overwrite Table emp_partition Partition(deptno=10) select empno,ename,job,mgr,hiredate,sal,comm form emp where deptno=10;
Create table emp_dynamic_partition(empno int,ename string,job string,mgr int,hiredate string, sal double,comm double) Partition by(deptno int) Row Format Delimited Fields Terminated By ‘\t‘;
Insert Overwrite Table emp_dynamic_partition Partition(deptno) select empno,ename,job,mgr,hiredate,sal comm form emp;
Load Data Local Inpath ‘home/hadoop/data/order_created.txt‘ [Overwrite] into table order_mulit_parititon Partition (event_month=‘2014-05‘,step=‘1‘)
Insert overwrite table emp4 select empo,job,ename,mgr hiredate,sal,comm,deptno from emp;
from emp insert into table emp4 select *;
select deptno,avg(sal) avg_sal from emp group by deptno having avg_sal >2000;
通过设置hive中的参数可以部分限制MR的使用级别,默认Select * from table;是不用走mapReduce的;涉及到多对一的聚合函数:多进一出,则必然使用MapReduce,比如:max,min,count,sum,avg。
标签:oca 多级 最好 原理 访问 通过 comment root 外部表
原文地址:https://www.cnblogs.com/chhyan-dream/p/12057077.html