Hive基本操作

本文详细介绍了Hive中的数据库创建、查看、修改、删除以及表的创建、操作、数据导入的方法,包括建库语法、表定义、数据加载等关键步骤。
摘要由CSDN通过智能技术生成

Hive建库

建库语法

CREATE DATABASE [IF NOT EXISTS] database_name
	#database_name :库名
	#IF NOT EXISTS :如果没有该字段库存在则报错。如果有该字段库存在则不报错。
[COMMENT database_comment]
	#database_comment :库的描述信息
[LOCATION hdfs_path]
	#hdfs_path :库的地址(默认在配置文件hive.metastore.warehouse.dir设置的路径)
[WITH DBPROPERTIES ('属性的名字'='属性的值', ...)];
	#WITH DBPROPERTIES :给库设置属性

对库的操作

--1.查看所有的库(like :模糊查询)
show databases [like '匹配的字符'];

--2.查看库的详情(extended :可以查看库的属性)
desc database [extended] 库名;

--3.选库
use 库名;

--4.修改库:只能改库的属性
alter database 库名 set dbproperties('key'='值');

--5.删库
#if exists :如果不加该字段库不存在则报错。加上该字段库不存在不报错。
#cascade :用来删除非空的库。
drop database [if exists] 库名 [cascade];

--6.查看建库的语句
show create database 库名;

Hive建表

Hive建表语法:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
  [(col_name data_type [column_constraint_specification] [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], ...)] INTO num_buckets BUCKETS]
  [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
     ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
     [STORED AS DIRECTORIES]
  [
  --行格式 ,指定字段分割符
   [ROW FORMAT row_format] 
   -- 字段分割符 delimited fields terminate by ','
   -- 集合类型分割符(array,map,struct) collection items terminated by '_'
   --存储格式 默认是
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
  ]
  --数据存储hdfs上位置 TextFile ,还可以是orc parquet
  [LOCATION hdfs_path]
  --表属性 ,没用过
  [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
  --将查询结果作为一张新表,不支持外部表
  [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)

EXTERNAL关键字创建外部表。

外部表在进行表删除时,只删除元数据,表数据不会删除。

内部表进行表删除时,元数据和表数据都会被删除。

通过已经存在的表创建Hive表语法:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
  LIKE existing_table_or_view_name
  [LOCATION hdfs_path];

集合数据类型创建表示例:

create table person(
name string, #String类型
friends array<string>, #数组类型
children map<string,int>,#map类型
address struct<street:string,city:string,email:int> #struct类型
)
row format
#字段按照什么字符分隔开
delimited fields terminate by ','
#集合数据类型(array,map,struct)型用什么分隔开
collection items terminated by '_'
#map的k,v用什么分隔开
map keys terminated by ':'
#每条数据用什么分隔开--(可以不写默认的)
lines terminated by '\n'

集合数据类型的表查询

select friends[0],children['xiao song'],address.city from test;
#数组类型的字段名[索引值]
#map类型的字段名[key的名字]
#struct类型的字段名.字段名

对表的操作

--1.查看所有的表
show tables;

--2.查看表结构(fromatted :查看表更详细的信息)
desc [fromatted] 表名;

--3.删除表
drop table 表名;

数据导入

1.文件方式导入数据

# LOCAL表示导入本地文件,否则为HDFS上的文件 
# OVERWRITE 覆盖写入 
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]   
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] [INPUTFORMAT 'inputformat' SERDE 'serde'] (3.0 or later)

2.直接插入数据

# insert into追加写 
# insert overwrite 覆盖写 
insert into|overwrite table tableName values(col1_valuse,col2_valuse),(col1_valuse,col2_valuse).......;

3.将查询的结果插入表中

insert into table tableName query_sql;

4.通过查询结果创建一张表

create table if not exists tableName as query_sql;

5.创建表时,指定数据存储位置为已经存在数据文件的路径

create table stu( id int, name string ) row format delimited fields terminated by '\t' location '/stu';

6.Import导入

#Import导入的数据必须是Export导出的数据

#将数据导入的表必须是不存在的

import table tableName from 'hdfs_path'

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值