Hive SQL

目录

一、数据类型

1、基本数据类型

2、复合数据类型

二、数据定义

1、数据库

2、表

创建表

拷贝表模式

查看表

管理表

外部表

分区表

三、数据操作

转载数据



 

一、数据类型

1、基本数据类型

类型说明
数值型
tinyint

1字节0-255整数

SMALLINT小整形2字节
INT4字节整形
BIGINT8字节整形
FLOAT单精度
DOUBLE双精度
DECIMAL可带小数的精确数字字符串
布尔型
BooleanTRUE/FALSE
字符串型
STRING不设长度
varchar最大长度65535,长度不固定字符串
char最大长度255,固定长度字符串
时间类型
TIMESTAMP时间戳类型
DATE

日期类型

字节序列:BINARY

2、复合数据类型

ARRAY

同类型元素的数组,索引从0开始,ARRAY<TYPE>

MAP字典类型MAP<TYPE,TYPE>
STRUCT结构体类型,STRUCT<COL:TYPE,COL:TYPE....>
UNIONTYPE联合体类型,UNIONTYPE<TYPE,TYPE.....>

二、数据定义

1、数据库

创建数据库的语句如下。

CREATE DATABASE [IF NOT EXISTS] dbName 
[COMMENT '这是一个数据,创建数据库可以指定位置']
[LOCATION '/user/hadoop/mydb']
[WITH DBPROPERTIES('CREATOR'='JONE','DATE'='2020-12-29')];

查找数据库

SHOW DATABASES;
//还可以用正则表达式匹配筛选出想要找的数据库
SHOW DATABASES LIKE 'd.*';

查看数据库信息

DESCRIBE DATABASE dbName;

切换当前数据库

USE default;

通过以下命令显示当前数据库

set hive.cli.print.current.db=true

删除数据库

DROP DATABASE [IF EXISTS] dbName CASCADE;

测试:

CREATE DATABASE IF NOT EXISTS mydb
COMMENT '测试数据库'
LOCATION '/user/hadoop/mydb'
WITH DBPROPERTIES('CREATOR'='Jone','DATE'='2020-12-29');

在执行descibe database mydb的时候,数据库中文注释总是乱码,按照网上的方法也搞不定。好在表,字段注释不是乱码。

2、表

创建表

CREATE TABLE [IF NOT EXISTS] mydb.student_info(
id              VARCHAR(5) COMMMENT '唯一标识',
name            STRING COMMENT '名字',
age             UNIONTYPE<INT,STRING> COMMENT '年龄,联合类型可以是int,可以是string',
home_address    STRUCT<PROVINCE:STRING,CITY:STRING,TOWN:STRING> COMMENT '家庭地址,省市乡三级行政机构',
family          ARRAY<STRING> COMMENT '家人'
)
[COMMENT '学生信息表']
[TBLPROPETTIES('CREATOR'='ATM')]
[LOCATION '/user/hadoop/mydb/student_info'];

拷贝表模式

CREATE TABLE mydb.stu 
LIKE mydb.student_info

查看表

describe [formatted] student_info;
show tblproperties student_info;

管理表

管理表也叫内部表,这种表的数据周期由hive控制。当删除表中的数据时,数据文件中的数据也会被删除。

外部表

区别于内部表,hive对外部表没有所有权。所以当删除表时,hive仅删除相关元数据。不会删除数据文件。

CREATE [EXTERNAL] TABLE IF NOT EXISTS mydb.student_info(
id              VARCHAR(5) COMMENT '唯一标识',
name            STRING COMMENT '名字',
age             UNIONTYPE<INT,STRING> COMMENT '年龄,联合类型可以是int,可以是string',
home_address    STRUCT<PROVINCE:STRING,CITY:STRING,TOWN:STRING> COMMENT '家庭地址,省市乡三级行政机构',
family          ARRAY<STRING> COMMENT '家人'
)
COMMENT '学生信息表'
LOCATION '/user/hadoop/mydb/student_info'
TBLPROPERTIES('CREATOR'='ATM');

分区表

CREATE TABLE WORDS(LINE STRING)
PARTITIONED BY (DT STRING);

通过[PARTITIONED BY]来指定分区列,这个列不用放在表模式中。hive会在hdfs中创建分区子目录。

三、数据操作

加载数据

LOAD DATA [LOCAL] INPATH INTO TABLE employees PARTITION (COUNTRY = 'US',STATE='CA');

如果指定了LOCAL关键字,则后面的INPATH是本地路径,否则是hdfs上的路径。

HiveSQL和MySQL是很像的。如果有MySQL基础,HiveSQL也是可以很容易上手的。

HIVE  SQL的知识非常多。这里简单介绍一点点。可以看书学习。推荐人民邮电出版社出版的曹坤翻译的《Hive编程指南》

到此Hadoop、zookeeper、hive、hue都以及有了。下一步就是期待已久的实战了。这里参考华为大数据实验离线分析部分的指导文档

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值