hive概要、数据类型、列的分割符

hive概要、数据类型、列的分割符

什么是hive

  • 构建在Hadoop之上的数据仓库
  • Hive定义了一种类SQL查询语言:HQL(类似SQL但不完全相同)
  • 通常用于进行离线数据处理(采用MapReduce)
  • 底层支持多种不同的执行引擎(Hive on MapReduce、Hive on Tez、Hive on Spark)
  • 支持多种不同的压缩格式、存储格式以及自定义函数(压缩:GZIP、LZO、Snappy、BZIP2… ; 存储:TextFile、SequenceFile、RCFile、ORC、Parquet ; UDF:自定义函数)

官网上的介绍

  • Hive 数据仓库软件为分布式存储的大数据集上的读、写、管理提供很大方便,同时还可以用SQL语法在大数据集上查询。
  • 是一种易于对数据实现提取、转换、加载的工具(ETL)的工具。可以理解为数据清洗分析展现。
  • 它有一种将大量格式化数据强加上结构的机制。
  • 它可以分析处理直接存储在hdfs中的数据或者是别的数据存储系统中的数据,如hbase。
  • 查询的执行经由mapreduce完成。
  • hive可以使用存储过程
  • 通过Apache YARN和Apache Slider实现亚秒级的查询检索。

hive的安装模式

  1. hive的单机安装(使用derby做元数据存储)
  2. hive的独立安装模式(使用mysql做元数据存储)
  3. hive的远程安装模式

hive的数据类型

1.基本数据类型
类型描述示例
TINYINT1字节 有符号整数1
SMALLINT2字节 有符号整数1
INT4字节 有符号整数1
BIGINT8字节 有符号整数1
FLOAT4字节 单精度浮点数1.0
DOUBLE8字节 双精度浮点数1.0
BOOLEANtrue/falseTRUE
STRING字符串‘a’,”a”
BINARY字节数组
TIMESTAMP精度到纳秒的时间戳132550245000,‘2016-01-01 03:04:05.123456789’

注意:新增数据类型TIMESTAMP的值可以是

  • 整数:距离Unix新纪元时间(1970年1月1日,午夜12点)的秒数
  • 浮点数:距离Unix新纪元时间的秒数,精确到纳秒(小数点后保留9位数)
  • 字符串:JDBC所约定的时间字符串格式,格式为:YYYY-MM-DD hh: mm: ss: fffffffff

注意BINARY数据类型用于存储变长的二进制数据。

2.复杂数据类型
类型描述示例
ARRAY一组有序字段,字段的类型必须相同array(1,2)
MAP一组无需的键值对,键的类型必须是原子的,值可以是任何类型。同一个映射的键的类型必须相同,值的类型也必须相同。map(‘a’,1,’b’,2)
STRUCT一组命名的字段,字段的类型可以不同struct(‘a’,1,1,0)
数据类型的例子

创建员工表,使用默认分割符

CREATE TABLE employee(
      name STRING,
      salary FLOAT,
      leader ARRAY<STRING>,
      deductions MAP<STRING,FLOAT>,
      address STRUCT<street:STRING,city:STRING,state:STRING,zip:INT>
      )
      ;

列的分割符

HiveQL文本文件数据编码表

类型描述
\n对于文本文件来说,每行都是一条记录,因此换行符可以分割记录
^A(Ctrl+A)用于分隔字段(列)。在CREATE TABLE语句中可以使用八进制编码\001表示
^B用于分隔ARRARY或者STRUCT中的元素,或用于MAP中键-值对之间的分隔。在CREATE TABLE语句中可以使用八进制编码\002表示
^C用于MAP中键和值之间的分隔。在CREATE TABLE语句中可以使用八进制编码\003表示

例子

CREATE TABLE employee(
  name                    STRING,
  salary                   FLOAT,
  subordinates         ARRAY<STRING>,
  deductions            MAP<STRING,FLOAT>,
  address                  STRUCT<street:STRING,city:STRING,state:STRING,zip:INT>
  )
ROW FORMAT DELIMITED  
FIELDS TERMINATED BY '\001'  
COLLECTION ITEMS TERMINATED BY '\002'  
MAP KEYS TERMINATED BY '\003'  
LINES TERMINATED BY '\n'  
STORED AS TEXTFILE; 

说明:

  • **[ROW FORMAT DELIMITED]**关键字,是用来设置创建的表在加载数据的时候,支持的列分隔符;

  • FIELDS TERMINATED BY ‘\001’ ,字符\001是A的八进制数。这个子句表明Hive将使用A字符作为列分隔符。

  • COLLECTION ITEMS TERMINATED BY ‘\002’ ,字符\002是B的八进制数。这个子句表明Hive将使用B字符作为集合元素的分隔符。

  • MAP KEYS TERMINATED BY ‘\003’ ,字符\003是C的八进制数。这个子句表明Hive将使用C字符作为map的键和值之间的分隔符。

  • LINES TERMINATED BY ‘\n’ 、STORED AS TEXTFILE这个两个子句不需要ROW FORMAT DELIMITED 关键字

  • Hive目前对于LINES TERMINATED BY…仅支持字符‘\n’,行与行之间的分隔符只能为‘\n’。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值