1.Hive基础

本文介绍了Hive作为大数据处理工具的作用,它将结构化数据映射为表并支持类SQL查询,底层通过MapReduce执行。Hive的数据存储在HDFS上,不支持更新和删除操作。与MySQL对比,Hive启动依赖Hadoop集群。可以使用命令行或通过元数据、JDBC(如Beeline)访问Hive。此外,文章还讨论了Hive的基本和集合数据类型,以及数据导入和查询的示例。
摘要由CSDN通过智能技术生成

1.简介

作用:结构化数据映射为一张表,并提供类sql功能

本质:将HQL转化成MapReduce程序

(1)Hive处理的数据存储在HDFS ​

(2)Hive分析数据底层的实现是MapReduce ​

(3)执行程序运行在Yarn上

ps.  HDFS 不支持随机写,只支持追加写,所以在 Hive 中不能 update 和delete,能 select 和 insert

与数据库对比:

2.mysql

启动mysql

mysql -uroot -p123456

关闭mysql

mysql> exit;

3.启动hive 

ps.hive的底层是基于hadoop的,因此启动hive必须依赖hadoop集群 

3.2 1 直接启动hive

开启集群

my_hadoop start

直接启动hive 

[atguigu@hadoop101 ~]$ hive

退出hive 

hive> exit;

关闭集群

my_hadoop stop

ps.开启方式简单,但是查询数据输出不规整 

3.2.2 通过元数据或者jdbc的方式访问hive

ps.开启方式复杂,但是返回的数据很规整 

前期准备:启动集群

my_hadoop start

通过自定义脚本启动元数据(对应的metastore)与jdbc(对应的是 hiveserver2)的 runar

 hiveservices.sh start | stop | restart| status

通过beeline启动hive 

[atguigu@hadoop101 ~]$ beeline -u jdbc:hive2://hadoop101:10000 -n atguigu

关闭hive 

jdbc:hive2://hadoop101:10000> !quit

关闭集群

my_hadoop stop

kill 掉runjar

kill -9 XXX
kill -9 XXX

4.数据类型

4.1 基本数据类型 

HivemysqlJAVAlength示例
TINYINTTINYINTbyte1byte有符号整数2
SMALINTSMALINTshort2byte有符号整数20
INTINTint4byte有符号整数20
BIGINTBIGINTlong8byte有符号整数20
BOOLEANboolean布尔类型,true或者falseTRUE FALSE
FLOATFLOATfloat单精度浮点数3.14159
DOUBLEDOUBLEdouble双精度浮点数3.14159
STRINGVARCHARstring字符系列。可以指定字符集。可以使用单引号或者双引号。‘now is the time’“
TIMESTAMPTIMESTAMP时间类型'2013-01-31 00:13:00.345’
BINARYBINARY字节数组1010

 ps.红标为常用的数据类型;

ps.对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串.

4.2 集合数据类型

数据类型                                          示例描述
STRUCT例如,如果某个列的数据类型是STRUCT{first STRING, last STRING},那么第1个元素可以通过字段.first来引用。例如:struct<street:string, city:string>
MAP例如,如果某个列的数据类型是MAP,其中键->值对是’first’->’John’和’last’->’Doe’,那么可以通过字段名[‘last’]获取最后一个元素例如map<string, int>
ARRAY

例如,数组值为[‘John’, ‘Doe’],那么第2个元素可以通过

数组名[1]进行引用。

例如array<string>

例子:

1.hive下方有一个datas目录,在其中vim test.txt:

songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing

ps.每一行的数据都包含了四种类型,分别是string,array,map,struct

2. 在hive上创建表

create table test(
name string,
friends array<string>,
children map<string, int>,
address struct<street:string, city:string>
)

3.数据分割(按照数据决定)

row format delimited fields terminated by ','  // 让每个字段按逗号分开
collection items terminated by '_'   // 集合(MAP STRUCT和ARRAY)的分隔符
map keys terminated by ':'     // MAP中的key与value的分隔符
lines terminated by '\n';      // 行分隔符(可以判断出是两行)

4.导入文本数据到测试表

load data local inpath '/opt/module/hive/datas/test.txt' into table test;

 5.访问数据

hive (default)> select name,friends[1],children['xiao song'],address.city
 from test where name="songsong";

查询结果:

                        

4.3 类型转换

1.规则:

(1)隐式转换

     任何整数类型都可以隐式地转换为一个范围更广的类型。

     如TINYINT可以转换成INT,INT可以转换成BIGINT。

    所有整数类型、FLOAT和.STRING类型的数字.都可以隐式地转换成DOUBLE。

    TINYINT、SMALLINT、INT都可以转换为FLOAT。

     BOOLEAN类型不可以转换为任何其它的类型。

(2)强制转换

         使用CAST操作。例如CAST(‘1’ as int)将把字符串’1’ 转换成整数1

2.示例

hive (default)> select '1' + 2, cast('1' as int) + 2;

_c0	   _c1
3.0	    3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值