Hive数据定义

HiveQL是Hive查询语言,作为ANSI SQL的一种方言。但是其还是有和关系数据库支持的SQL中有本质的差异。如:Hive不支持事务,且默认情况下不支持行级别插入,更新,删除操作。

虽然可以在HiveQL中使用关联子句,但HiveQL中并没有主外键概念,也就没有强制的约束控制,这样数据的存储可以宽泛很多。

Hive数据库

Hive中的数据库概念本质上仅仅是目录或者命名空间,然而用户来说,这样可以避免表命名冲突。通常使用数据库将生产表组织成逻辑组。

在Hive中有一个默认的库 default。

**Hive 为每个数据库创建一个目录**。数据库中的表将会以这个数据库目录的子目录形式存在。

创建表的3中方法
 直接创建:
 CREATE TABLE IF NOT EXISTS TABLE_NAME (col_name data_type); 
 查询建表:
 CREATE TABLE IF NOT EXISTS TABLE_NAME 
 SELECT * FROM TABLE_NAME_2 ;
 LIKE建表:(复制了表结构)
 CREATE TABLE TABLE_NAME LIKE TABLE_NAME_2 ;
 LOCATION 子句指定表数据文件的存储路径,默认情况下是默认的数据仓库的路径,也可以指定不同的路径,针对这种情况多是针对外部表的设置。
Hive数据定义

创建

创建表的3中方法
 直接创建:
 CREATE TABLE IF NOT EXISTS TABLE_NAME (col_name data_type); 
 查询建表:
 CREATE TABLE IF NOT EXISTS TABLE_NAME 
 SELECT * FROM TABLE_NAME_2 ;
 LIKE建表:(复制了表结构)
 CREATE TABLE TABLE_NAME LIKE TABLE_NAME_2 ;
 LOCATION 子句指定表数据文件的存储路径,默认情况下是默认的数据仓库的路径,也可以指定不同的路径,针对这种情况多是针对外部表的设置。

Hive数据定义

LOAD DATA LOCAL

Hive数据定义

LOAD DATA

查看表信息:
 DESCRIBE(DESC) TABLE_NAME ; 
 DESCRIBE(DESC) EXTENDED TABLE_NAME[.col_name] ; -- 查询更加信息的信息
 DESCRIBE(DESC) FORMATTED TABLE_NAME[.col_name] ; -- 更多的信息,且信息的可读性更强
内部表(管理表)和外部表:
 内部表: 内部表删除后,表元数据和表数据都被删除。对于内部表不方便与其他工作共享数据,只属于Hive,有完整的权限进行操作。创建表使用的常规的创建表的语句。
 外部表: 数据是和Hive进行共享的,当表删除时,仅删除表的元数据,但是数据还是保留的。 
 创建表使用的语句,LOCATION 指明了数据位于哪个位置下。
 CREATE EXTERNAL TABLE IF NOT EXISTS TABLE_NAME (col_name data_type) 
 LOCATION 'path/paht2' ;

Hive数据定义

  • 分区表:

通过使用分区来水平分散压力,将数据从物理上转移到使用最频繁的用户更近的地方,及其他目的。在Hive中分区的概念,其具有性能优势,

分区表还可以将数据以一种符合逻辑的方式进行组织,比如分层存储。使用关键字PARTITIONED,使用的分区表会改变数据存储组织方式。

 CREATE TABLE IF NOT EXISTS TABLE_NAME (col_name data_type) 
 PARTITIONED BY(col_name date_type , col_name data_type);
  • 删除表:
 DROP TABLE IF EXISTS TABLE_NAME ;
  • 修改表:

表重命名: ALTER TABLE TABLE_NAME RENAME NEW_NAME ;

增加,修改和删除表分区:

 ALTER TABLE TABLE_NAME ADD IF NOT EXISTS PARTITION (col_name=''...) LOCATION 'PATH'
  • 修改列信息:可以进行重命名,修改位置,类型或者注释。
 ALTER TABLE TABLE_NAME CHANGE COLUMN column_name 

增加列: 添加列到以后字段后

 ALTER TABLE TABLE_NAME ADD COLUMNS(col_name date_type,.....);
  • 删除或替换列:
 ALTER TABLE TABLE_NAME REPLACE COLUMNS( 
 col_name col_type COMMENT '',
 ...... )
  • 修改存储属性:
 ALTER TABLE TABLE_NAME PARTITION(col_name....) SET FILEFORMAT SEQUENCEFILE ;


分享到:


相關文章: