赞
踩
Hive的hql语句支持SQL一般语法,大致与SQL相似。
SQL语言包括四种主要程序设计语言类别的语句:
数据定义语言(DDL),数据操作语言(DML),数据控制语言(DCL)和事物控制语言(TCL)
DDL(Data Definitition Language):数据库模式定义语言
1.创建库:
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment] //创建库带注释
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)]; //创建库指定属性
create databases dbname; / create databases if not exists dbname;
创建库的时候带注释:create database if not exists dbname comment 'create my db named dbname';
创建带属性的库 create database if not exists dbname with dbproperties ('a'='aaa','b'='bbb');
2.查看库
查看所有库:show databases;
显示数据库的详细属性信息 语法:desc database [extended] dbname;
查看正在使用哪个库:select current_database();
3.删除库
删除库操作: drop database dbname; / drop database if exists dbname;
*默认情况下,hive 不允许删除包含表的数据库,有两种解决办法:
1、 手动删除库下所有表,然后删除库
2、 使用 cascade 关键字 drop database if exists dbname cascade;
默认情况下就是 restrict drop database if exists myhive ==== drop database if exists myhive restrict
4.切换库操作: 语法:use database_name
1.创建表
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] //指定表的数据存储路径
语法解析:
默认建表为内部表 ,加关键字EXTERNAL,新建为外部表,在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删 除数据。(ps:公共数据一般都是用外部表)
表的数据存储路径都是可以通过 location 指定的!!!!!!
推荐方式: 1、 创建内部表的时候,最好别指定 location,就存储在默认的仓库路径 2、 如果要指定外部路径,那么请创建该表为外部表
PARTITIONED BY:建分区表关键字
CLUSTERED BY :建分桶表关键字 [SORTED BY (col_name [ASC|DESC], ...)] 指定每个桶的排序规则INTO num_buckets BUCKETS] 分的桶的个数
[ROW FORMAT row_format] 指定分割符:
列分割符:fields terminated by ' , '
行分割符:lines terminated by ' , '
元素分割符:items terminated by ' , '
[STORED AS file_format] 指定表中读取文件的类型 默认 textfile
textfile 文本格式 rcfile 行列存储相结合的存储方式 sequencefile 二进制文件格式
LOCATION:指定数据文件存放的 HDFS 目录,不管内部表还是外表,都可以指定。不指 定就在默认的仓库路径。
最佳实践: 如果创建内部表请不要指定 location 如果创建表时要指定 location,请创建外部表。
列举四个类型表的建表示例:
内部表:
create table if not exists student(id int,name string,sex string,age int,department string) row format delimited fields terminated by ',' STORED as textfile ; //若指定了hdfs存储路径,则会覆盖配置文件中默认设置的目录路径
外部表:
create external table if not exists student_ext(id int,name s
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。