hive> show create table emp;
OK
CREATE TABLE `emp`(
`empno` int,
`name` string,
`job` string,
`mgr` int,
`hiredate` string,
`salary` double,
`comm` double,
`depno` int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://10.0.0.7:9000/user/hive/warehouse/hive.db/emp'
TBLPROPERTIES (
'COLUMN_STATS_ACCURATE'='true',
'numFiles'='1',
'numRows'='0',
'rawDataSize'='0',
'totalSize'='700',
'transient_lastDdlTime'='1528384633')
Time taken: 0.113 seconds, Fetched: 24 row(s)
hive>
3. 函数
3.1 查看hive内建(build-in)函数
hive> show functions;
3.2 Hive聚合函数
聚合函数:max/min/count/sum/avg ,聚合函数特点是多进一出(有mr过程)
分组函数:group by; case when then(有聚合函数,所以也有mr过程)
join函数:(有mr过程)
inner join: =join
outer join:left join,right join,full join
left semi join(子查询)
# 聚合函数
hive> select max(salary) from emp;
# 分组函数
hive> select deptno, avg(salary) from emp group by deptno;
hive> select ename,salary,
> case
> when salary>1 and salary<=1000 then 'lower'
> when salary>1000 and salary<=2000 then 'middle'
> when salary>2000 and salary<=4000 then 'high'
> else 'highest'
> end
> from emp;
hive>
# join 函数
hive> create table a(
> id int, name string
> ) row format delimited fields terminated by '\t';
OK
Time taken: 0.229 seconds
hive> create table b(
> id int, age int
> )row format delimited fields terminated by '\t';
OK
Time taken: 0.094 seconds
hive> load data local inpath '/home/hadoop/data/join_a.txt' overwrite into table a;
hive> load data local inpath '/home/hadoop/data/join_b.txt' overwrite into table b;
hive> select * from a;
OK
1 name1
2 name2
3 name3
Time taken: 0.057 seconds, Fetched: 3 row(s)
hive> select * from b;
OK
1 15
2 16
4 17
Time taken: 0.055 seconds, Fetched: 3 row(s)
hive>
# inner join
hive> select * from a inner join b on a.id = b.id; # (有mr过程)
OK
1 name1 1 15
2 name2 2 16
Time taken: 19.598 seconds, Fetched: 2 row(s)
hive> select * from a join b on a.id = b.id; # (有mr过程,与上面一条inner join语句等价)
OK
1 name1 1 15
2 name2 2 16
Time taken: 19.639 seconds, Fetched: 2 row(s)
hive>
# left join
hive> select * from a left join b on a.id = b.id; # (有mr过程)
OK
1 name1 1 15
2 name2 2 16
3 name3 NULL NULL
Time taken: 20.097 seconds, Fetched: 3 row(s)
hive>
# right join
hive> select * from a right join b on a.id = b.id; # (有mr过程)
OK
1 name1 1 15
2 name2 2 16
NULL NULL 4 17
Time taken: 19.124 seconds, Fetched: 3 row(s)
hive>
# full join
hive> select * from a full join b on a.id = b.id; # (有mr过程)
OK
1 name1 1 15
2 name2 2 16
3 name3 NULL NULL
NULL NULL 4 17
Time taken: 19.047 seconds, Fetched: 4 row(s)
hive>
# left semi join
hive> select a.id,a.name from a where a.id in (select b.id from b);
OK
1 name1
2 name2
Time taken: 21.852 seconds, Fetched: 2 row(s)
hive>
上面这个子查询等价于
hive> select a.id,a.name from a left semi join b on a.id = b.id;
OK
1 name1
2 name2
Time taken: 19.91 seconds, Fetched: 2 row(s)
hive>
hive数据分为哪两块?分别存储在哪?
hive的建表SQL语句你们觉得里有哪些内容?(不光光是字段的定义)
默认的换行符和分割符是什么?
行:\n
列:\001 ^A
加载数据或本地数据到hive表或者覆盖hive表,语法是什么?
加载数据或本地数据到hive表或者覆盖hive表,语法是什么?
create table a as select * from b; 你们觉得有没有mr job?(好像要加as 我不太确认)
官网:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
1. 数据库操作
1.1 创建数据库
语法: CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)];
1.2 删除数据库
语法: DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
1.3 修改数据库
语法:ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path;
1.4 进入数据库
语法:USE database_name;
1.5 查看数据库描述
语法:DESC database_name;
2. 表操作
Hive 创建表默认使用的是MANAGED_TABLE,也就是内部表。外部表在创建时,要指定EXTERNAL TABLE。 内部表使用场景:管理表的生命周期、生成临时表。
Hive 默认的分隔符: 行分隔符: \n 列分隔符: \001 ^A
2.1 创建表
2.2 向表中导入数据(txt文件导入)
2.3 删除表
语法:DROP TABLE [IF EXISTS] table_name [PURGE];
内部表在删除时,hdfs+meta同时被删除。 外部表在删除时,只有meta被删除,hdfs数据保留。
2.4 修改表
语法: 表重命名:ALTER TABLE table_name RENAME TO new_table_name; 修改表字段属性:ALTER TABLE table_name SET TBLPROPERTIES table_properties; 修改字段注释:ALTER TABLE table_name SET TBLPROPERTIES ('comment' = new_comment);
2.5 查看表描述信息
语法:DESC table_name;
2.6 清空表
只有内部表才有这个操作,外部表没有。 语法:TRUNCATE TABLE table_name [PARTITION partition_spec];
2.7 查看表的建表语句(DDL)
3. 函数
3.1 查看hive内建(build-in)函数
3.2 Hive聚合函数
聚合函数:max/min/count/sum/avg ,聚合函数特点是多进一出(有mr过程) 分组函数:group by; case when then(有聚合函数,所以也有mr过程) join函数:(有mr过程) inner join: =join outer join:left join,right join,full join left semi join(子查询)
注意: 对大数据工具来说,不存在回滚的概念。但是有一个概念叫重跑(要求重跑的操作是幂等的,即跑100遍结果都一样)。