大数据之Hive学习——1三分钟快速入门

第一章 Hive数据类型

1 Hive数据类型

本篇文章介绍Hive不同的数据类型, 用于创建表. Hive所有的数据类型分为四种类型, 给出如下.

  • 列类型
  • 文字
  • Null 值
  • 复杂类型

1.1 列类型

列类型被用作Hive的列数据类型. 它们如下:

整型

整形数据可以指定使用整型数据类型, INT. 当数据范围超过INT的范围时, 需要使用BIGINT, 如果数据范围比INT小, 使用SMALLINT. TINYINTSMALLINT 小.

下表描述了各类INT数据类型.

类型后缀示例
TINYINTY10Y
SMALLINTS10S
INT-10
BIGINTB10L
字符串类型

字符串类型的数据类型可以使用单引号或双引号来指定. 它包含两个数据类型, VARCHARCHAR. Hive遵循C-类型的转义字符.
下表描述了各类CHAR数据类型:

数据类型长度
VARCHAR1-65355
CHAR255
时间戳

它支持传统的UNIX时间戳可选纳秒的精度. 它支持java.sql.Timestamp格式YYYY-MM-DD HH:MM:SS.fffffffff 和格式YYYY-MM-DD HH:MM:ss.fffffffff

日期

DATE值在年/月/日的格式形式描述.

小数点

在Hive小数类型与Java大十进制格式相同. 它可以同于表示不可改变的任意精度. 语法和示例如下:

DECIMAL(precision, scale)
decimal(10, 0)
联合类型

联合类型和异类的数据类型的集合. 它可以使用联合创建的一个实例. 语法和示例如下:

UNIONTYPE<int, double, array<string>, struct<a:int, b:string>>

{0:1}
{1:2.0}
{2:["three", "four"]}
{3:{"a":5, "b":"five"}}
{2:["six", "seven"]}
{3:{"a":8, "b": "eight"}}
{0: 9}
{1: 10.0}

1.2 文字

下面是Hive中使用的文字数据类型

浮点类型

浮点类型是只不过有小数点的数字. 通常, 这种类型的数据组成DOUBLE数据类型.

十进制类型

十进制数据类型是只不过浮点值范围比DOUBLE数据类型更大. 十进制类型的范围大约是 − 1 0 − 308 -10^{-308} 10308 1 0 308 10^{308} 10308

NULL 值

缺少值通过特殊值- NULL表示

1.3 复杂类型

Hive复杂数据类型如下:

数组

在Hive数组与在Java中使用的方法相同.

Syntax: ARRAY<data_type>
映射

映射在Hive类似于Java的映射.

Syntax : MAP<primitive_type, data_type>
结构体

在Hive中结构体类似于使用复杂的数据.

Syntax: STRUCT<col_name: data_type [COMMENT col_comment], ...>

第二章 Hive数据库

1 Hive创建数据库

Hive是一种数据库技术, 可以定义数据库和表来分析结构化数据. 主题结构化数据分析是以表方式存储数据, 并通过查询来分析. 本篇文章介绍如何创建Hive数据库. 配置单元包含一个名为 default 默认的数据库.

CREATE DATABASE 语句

创建数据库是用来创建数据库在Hive中的语句. 在Hive数据库是一个命名空间或表的集合. 此语法声明如下.

CREATE DATABASE|SCHEMA [IF NOT EXISTS] <database name>

在这里, IF NOT EXISTS是一个可选字句, 通知用户已经存在相同名称的数据库. 可以使用SCHEMADATABASE的这个命令. 下面的查询执行创建一个名为userdb数据库.

hive> CREATE DATABASE [IF NOT EXISTS] userdb;

hive> CREATE SCHEMA userdb;

下面的查询用于验证数据库列表:

hive>SHOW DATABASE;
default
userdb

2 Hive删除数据库

DROP DATABASE语句

DROP DATABASE 是删除所有的表并删除数据库的语句. 它的语法如下:

DROP DATABASE StatementDROP (DATABASE|SCHEMA) [IFEXISTS] database_name

下面的查询用于删除数据库. 假设要删除的数据库名称为userdb.

hive> DROP DATABASE IF EXISTS userdb;

以下是使用CASCADE查询删除数据库. 这意味着要全部删除相应的表在删除数据库之前.

hive> DROP DATABASE IF EXISTS userdb CASCADE;

以下使用SCHEMA查询删除数据库.

hive> DROP SCHEMA userdb;

Hive 表

1 Hive创建表

1.1 CREATE TABLE 语句

Create Table适用于在Hive中创建表的语句, 语法如下:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name

[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[ROW FORMAT row_format]
[STORED AS file_format]
  • 示例

假设需要使用CREATE TABLE 语句创建一个名为employee表, 下表列出了employee表中的字段和数据类型:

Sr.No字段名称数据类型
1Eidint
2NameString
3SalaryFloat
4Dedignationstring

下面的数据是一个注释, 行格式字段, 如字段终止符, 行终止符, 并保存的文件类型.

COMMENT 'Employee details'
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED IN TEXT FILE;
hive> CREATE TABLE IF NOT EXISTS employee ( eid int, name String,
> salary String, destination String)
> COMMENT ‘Employee details’
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY ‘\t’
> LINES TERMINATED BY ‘\n’
> STORED AS TEXTFILE;

1.2 LOAD DATA语句

一般来说, 在SQL创建表后, 我们就可以使用INSERT语句插入数据. 但是在Hive中, 可以使用LOAD DATA语句插入数据.

同时将数据插入到Hive中, 最好是使用LOAD DATA来存储大量记录. 有两种的方法来家在数据, 一种是从本地文件系统, 一种是从Hadoop文件系统.

  • 语法

加载数据的语法如下:

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
  • LOCAL 是标识符指定本地路径, 可选

  • OVERWRITE 是可选的, 覆盖表中的数据

  • PARTITION 这是可选的

  • 示例

我们将插入下列数据到表中.

1201  Gopal       45000    Technical manager
1202  Manisha     45000    Proof reader
1203  Masthanvali 40000    Technical writer
1204  Kiran       40000    Hr Admin
1205  Kranthi     30000    Op Admin

假设存储的路径名为/home/user/sample.txt

hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt' OVERWRITE INTO TABLE employee;

2 Hive修改表

2.1 ALTER TABLE 语句

他是在Hive中用来修改表的语句.

  • 语法:

声明接受任意属性, 我们希望在一个表中修改以下语法.

alter table name rename to new_name;
alter table name add columns (col_spec[, col_spec ...]);
alter table name drop [column] column_name;
alter table name change column_name new_name new_type;
alter table name replace columns (col_spec[, col_spec ...]);

2.2 rename to 语句

重命名表, 比如将employee 重命名为 emp

hive> alter table employee rename to emp;

2.3 change 语句

change 语句一次查询只更改一个字段.

下表包含employee表的字段, 它显示的字段要被更改(粗体).

字段名原数据类型新字段名转化为数据类型
eidinteidint
nameStringenameString
salaryFloatsalary**Double
designationStringdesignationString

下面查询重命名使用上述数据的列名和列数据类型.

hive> alter table employee change name ename String;
hive> alter table employee change salary salary Double;

2.4 添加列语句

下面的查询增加了一个列名deptemployee

hive> alter table employee add columns (dept String commnet 'department name')

2.5 replace 语句

replace 语句一次查询可以更改多个字段.

一条语句达到前文中change语句的效果.

hive> alter table employee replace columns (
    eid int empid int,
    ename string name string
)

3 Hive删除表

DROP TABLE 语句

语法如下:

DROP TABLE [IF EXISTS] table_name;

以下删除一个名为employee的表:

hive> DROP TABLE IF EXISTS employee;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南山二毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值