查看数据库
show databases;

进入到某个数据库
use default;

展示有哪些表
show tables;

不进入Hive的命令行窗口就可以执行SQL语句
[root@master test]# hive -f hive-seclet.sql

hive (default)> quit;
hive (default)> exit;
exit:先提交数据,然后退出 quit:不提交数据,直接退出。

使用Hive的命令行窗口执行HDFS文件系统的查询
hive (default)> dfs -ls /hive;

使用Hive的命令窗口查看本地文件系统的文件和目录
hive (default)> ! ls /opt;

在本地文件系统中会存储hive中执行的命令的历史(在当前用户主目录)
[root@master ~]# cat .hivehistory

基本数据类型

Hive数据类型

长度

Java中对应的类型

example

tinyint

1字节

 byte 

20

int

4字节

int

111111

smallint

2字节

short

222

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

集合类型

数据 类型

描述

 

 

 

 

 

 

创建表
create table employees(id int,name string)
row format delimited fields terminated by '\t';

查询
select * from employees;

DDL的简单操作

在HDFS上创建数据库:warehouse/haha
hive (bigdata)> create database haha;

建议:以后加上if not exists判断
hive (bigdata)> create database if not exists haha;

修改数据库的属性
alter database haha set dbproperties('createtime'='20180808');
注意:数据库中的一些属性可以修改,但是数据库的名字和数据库所在 目录不可更改。

查看数据库
条件查询数据库
hive (default)> show databases like 'li*';

查询数据库的详细信息
hive (default)> desc database bigdata;

使用数据库
hive (default)> use bigdata;

删除数据库
hive (bigdata)> drop database if exists lisi;

删除非空数据库
hive (bigdata)> drop database bigdata;

强制删除非空数据库
hive (bigdata)> drop database bigdata cascade;

创建表语法


  CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name   
 
  
[(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
 
  
[COMMENT table_comment]
 
  
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
 
  
[CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)]
 
  
[SKEWED BY (col_name, col_name, ...)0.10.0 and later)]
 
  
ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
 
  
[STORED AS DIRECTORIES]
 
  
[
 
  
[ROW FORMAT row_format] 
 
  
[STORED AS file_format]
 
  
| STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)] 

 
  
]
 
  
[LOCATION hdfs_path]
 
  
[TBLPROPERTIES (property_name=property_value, ...)]  
 
  
[AS select_statement];  
 
  
 
 
  
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
 
  
LIKE existing_table_or_view_name
 
  
[LOCATION hdfs_path];
 
  
 
 
  
data_type
 
  
: primitive_type
 
  
| array_type
 
  
| map_type
 
  
| struct_type
 
  
| union_type 
 
  
 
 
  
primitive_type
 
  
: TINYINT
 
  
| SMALLINT
 
  
| INT
 
  
| BIGINT
 
  
| BOOLEAN
 
  
| FLOAT
 
  
| DOUBLE
 
  
| DOUBLE PRECISION -- (Note: Available in Hive 2.2.0 and later)
 
  
| STRING
 
  
| BINARY      -- (Note: Available in Hive 0.8.0 and later)
 
  
| TIMESTAMP   -- (Note: Available in Hive 0.8.0 and later)
 
  
| DECIMAL     -- (Note: Available in Hive 0.11.0 and later)
 
  
| DECIMAL(precision, scale)  -- (Note: Available in Hive 0.13.0 and later)
 
  
| DATE        -- (Note: Available in Hive 0.12.0 and later)
 
  
| VARCHAR     -- (Note: Available in Hive 0.12.0 and later)
 
  
| CHAR        -- (Note: Available in Hive 0.13.0 and later)
 
  
 
 
  
array_type
 
  
: ARRAY < data_type >
 
  
 
 
  
map_type
 
  
: MAP < primitive_type, data_type >
 
  
 
 
  
struct_type
 
  
: STRUCT < col_name : data_type [COMMENT col_comment], ...>
 
  
 
 
  
union_type
 
  
: UNIONTYPE < data_type, data_type, ... >  
 
  
 
 
  
row_format
 
  
: DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
 
  
[MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
 
  
[NULL DEFINED AS char]   -- (Note: Available in Hive 0.13 and later)
 
  
| SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
 
  
 
 
  
file_format:
 
  
: SEQUENCEFILE
 
  
| TEXTFILE    -- (Default, depending on hive.default.fileformat configuration)
 
  
| RCFILE      -- (Note: Available in Hive 0.6.0 and later)
 
  
| ORC         -- (Note: Available in Hive 0.11.0 and later)
 
  
| PARQUET     -- (Note: Available in Hive 0.13.0 and later)
 
  
| AVRO        -- (Note: Available in Hive 0.14.0 and later)
 
  
| JSONFILE    -- (Note: Available in Hive 4.0.0 and later)
 
  
| INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
 
  
 
 
  
constraint_specification:
 
  
: [, PRIMARY KEY (col_name, ...)
 
  
 
   [, CONSTRAINT constraint_name FOREIGN KEY (col_name, ...) REFERENCES table_name(col_name, ...)



说明: 
 1. CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存 在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。
 2. EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定 一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会 将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所 在的路径,不对数据的位置做任何改变。在删除表的时候,内部表 的元数据和数据会被一起删除,而外部表只删除元数据,不删除数 据。
 3. COMMENT:为表和列添加注释。
 4. PARTITIONED BY 创建分区表
 5. CLUSTERED BY 创建分桶表
 6. SORTED BY 不常用 
 7. 用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果 没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会 使用自带的 SerDe。在建表的时候,用户还需要为表指定列,用户 在指定表的列的同时也会指定自定义的 SerDe,Hive通过 SerDe确定表的具体的列的数据。
 8. STORED AS 指定存储文件类型 常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、 TEXTFILE(文本)、RCFILE(列式存储格式文件)如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE。
 9. LOCATION :指定表在 HDFS 上的存储位置。
 10. LIKE 允许用户复制现有的表结构,但是不复制数据。
 11. TBLPROPERTIES表的属性 
 12. AS select_statement将其他查询结果作为这个表的数据导入

内部表
默认创建的表都是所谓的内部表,有时也被称为管理表。因为这种表,Hive 会(或多或少地)控制着数据的生命周期。
Hive默认情况下会将这些表的数据存储在由配置项 hive.metastore.warehouse.dir(例如,/hive/warehouse)所定义的目录的子目录下。
当我们删除一个内部表时,Hive也会删除这个表中数据。内部表不适合和其他工具共享数据。

创建内部表
create table if not exists te acher(id int,name string) 
row format delimited fields t erminated by '\t' 
stored as textfile 
location '/wang/wangchen/teac her';

根据查询结果创建表
hive (wangchen)> create table if not exists st udent2 as select * from student;

根据已经存在的表创建表
create table if not exists student2 as select * from student;

查询表的类型
desc formatted student3;

外部表
创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。
Hive 并非认为其完全拥有这份数据。删除该表并不会删除掉这份数据,不过描述表的元数据信息会被删除掉。
创建表的基本语法
hive (wangchen)> create external table area(id int,aname string)
row format delimited fields termi nated by '\t';

导入数据
hive (wangchen)> load data local inpath '/opt/ test/student' into table area;

查看数据
hive (wangchen)> select * from area;

查询表的类型
hive (wangchen)> desc formatted area;

删除表
hive (wangchen)> drop table area;

分区表
分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。
Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。
在查询时通过WHERE子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。