Hive 支持关系型数据库中的大多数据基本数据类型,同时也支持3种集合类型;
 
3.1 Hive 的基本数据类型
支持多种不同他度的整形和浮点型数据类型,具体如下(全都是保留字):
tinyint    1byte 有符号整数
smalint    2byte有符号号数
int    4byte有符号号数
bigint    8byte有符号号数
boolean    布尔类型, true 或者 false
float    单精度浮点数
double    双精度浮点数
string    字符串
timpstamp    整数,浮点数或字符串
binary    字节数组
需要注意的是:这些都是JAVA 中的接口的实现,因此这些类型的具体行为细节和java中对应的类型是完全一致的;
如果用户在查询中将一个 float 类型列和一个 double 类型的列作对经,Hive 会隐式的将类型转换为两个类型中较大的那个类型;
cast (s AS INT)  将 s 转换成 int 类型
 
3.2 集合数据类型
Hive 中的列支持使用 struct、map、array 集合数据类型,例:
STRUCT    列类型为struct{first STRING,last STRING}     如: struct('john','Doe')
MAP    是一组键值对集合 字段名[last]获取值    如:map('first','Join','last','Doe')
ARRAY 是具有相关同类型和名称的变量的集合['John','Doe']    如:Array(['John','Doe'] )
例如:员工关系表
CREATE TABLE employees(
name STRING,   --名称
salary float,   --薪水
subordinates array<string>,    --下属员工
deductions map<string,float>,    --发薪水时从工工资中扣除掉的内容(如:税收 ,社保,公积金等)
address struct<street:string,city:string,stat:string,zip:int>    --员工家庭地址
)
 
3.3 文本文件数据编码
以逗号分隔值(CSV)或以制表符分隔值(TSV)文件;缺点,就是文件中那些不需要作为分隔符处理的逗号或者制表符要小心使用;
Hive 中默认的记录和字段分隔符:
\n    文本文件的换行符
^A   分隔字段(列),在 CREATE TABLE 语句中可以使用八进制编码(\001)表示 
^B    分隔 ARRAY 或者 STRUCT 中的元素,或用于 MAP 中键值对之间的分隔,使用八进制编码(\002)表示 
^C    用于 MAP 中键和值之间的分隔,使用八进制编码(\003)表示 
也可以不使用这些默认的分隔符,而指定其他的分隔符,例如:
CREATE TABLE employees(
    name STRING,
     salary FLOAT,
    subordinates ARRAY(STRING),
    deductions MAP(STRING,FLOAT),
    address    STRUCT<street:STRING,city:STRING,state:STRING,zip:INT>
)
ROW FORMAT DELIMITED    --必须写在下面的子句之前(stored as 除外)
FILEDS TERMINATED BY '\001'    --Hive 将使用 ^A 做为列分隔符
COLLECTION ITEMS TERMINATED BY '\002'  --表明Hive 将使用 ^B 做为集合元素间分隔符
MAP KEYS TERMINATED BY '\003'    --表明Hive 将使用 ^C 做为 MAP 的键值之间的分隔符
LINES TERMINATED BY '\n'    --下面这两句表明不需要 ROW FORMAT DELIMITED 做关键字
STORED AS TEXTFILE;   --此句很少被用到
注意:到目录前为止 Hive 对于 linesterminated by 公支持 \n 也就是说行与行之间分隔符只能是 \n
Hive 还支持其他类型的文本格式,15节课再细说
 
定义一个表是按照逗号来分隔:
create table some_data(fistr float, second float, third float) row format delimited fileds terminated by ',';
 
3.4 读时模式
Hive 在数据写入数据库时不会对对模式进行检查,也不会在数据加载时进行验证,而是在查询时进行,也就是读取时模式;如果模式和文件内容并不匹配,每行记录中的字段个数少于对应的模式中定义的字段个数的话,那么用户将会看到查询结果中有很多 null 值 ;如果某些字段是数值型的,但Hive 在读取的时候发现存在非数值型的字符串值的话,将返回 null 值,除此情况 Hive 会将极力尝试尽可能地将错误恢复过来;

hive[3] 数据类型和文件格式的更多相关文章

  1. 《Hive编程指南》读书笔记 | 一文看懂Hive的数据类型和文件格式

    Hive支持关系型数据库中的大多数基本数据类型,同时也支持关系型数据库中很少出现的3种集合数据类型. 和大多数数据库相比,Hive具有一个独特的功能,那就是其对于数据在文件中的编码方式具有非常大的灵活 ...

  2. 大数据时代的技术hive:hive的数据类型和数据模型

    在上篇文章里,我列举了一个简单的hive操作实例,创建了一张表test,并且向这张表加载了数据,这些操作和关系数据库操作类似,我们常把hive和关系数据库进行比较,也正是因为hive很多知识点和关系数 ...

  3. Hive 5、Hive 的数据类型 和 DDL Data Definition Language)

    官方帮助文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL Hive的数据类型 -- 扩展数据类型data_t ...

  4. hadoop笔记之Hive的数据类型

    Hive的数据类型 Hive的数据类型 前面说过,Hive是一个数据仓库,相当于一个数据库.既然是数据库,那么就必须能创建表,既然有表,那么当中就有列,列中就有对应的类型 总的来讲,hive的数据类型 ...

  5. Hive之数据类型

    Hive之数据类型   (本文是基于多篇文章根据个人理解进行的整合,参考的文章见末尾的整理) 数据类型 Hive支持两种数据类型,一类叫原子数据类型,一类叫复杂数据类型.原子数据类型包括数值型.布尔型 ...

  6. Hive 复杂数据类型的使用

    Hive复杂数据类型 1.Array数据类型的使用 1.1.创建数据库表,以array作为数据类型 hive (hive_demo1)> create table stu_test(name a ...

  7. Hive 数据类型与文件格式

    一.基本数据类型 1.基本数据类型 Tinyint  1byte有符号整数  比如20 Smalint 2byte有符号整数 比如20 Int          4byte有符号整数 比如20 Big ...

  8. hive(2)数据类型和文件格式

    基本的数据类型 Hive支持关系型数据中大多数基本的数据类型,同时也支持关系型数据库中很少出现的三种集合数据类型. 集合数据类型 Hive中的列支持使用struct.map.array集合数据类型,下 ...

  9. 【Kylin实战】Hive复杂数据类型与视图

    1. 引言 在分析广告日志时,会有这样的多维分析需求: 曝光.点击用户分别有多少? 标签能覆盖多少广告用户? 各个标签(标注)类别能覆盖的曝光.点击在各个DSP上所覆盖的用户数 -- 广告数据与标签数 ...

随机推荐

  1. setcookie各个参数详解

    定义和用法 setcookie() 函数向客户端发送一个 HTTP cookie. cookie 是由服务器发送到浏览器的变量.cookie 通常是服务器嵌入到用户计算机中的小文本文件.每当计算机通过 ...

  2. jsp页面的使用

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...

  3. 区分DPI、分辨率(PPI)、图像的物理大小、像素宽度

    分辨率都知道,越高越清晰. 一.描述分辨率的单位有:    dpi(点每英寸).lpi(线每英寸)和ppi(像素每英寸).但只有lpi是描述光学分辨率的尺度的.虽然dpi和ppi也属于分辨率范畴内的单 ...

  4. Hibernate注解:一对一主键关联

    情形:两个表,my_site和my_site_company,通过主键site_id唯一关联.my_site的主键是自动增加,my_site_company的主键依赖于my_site. # # Sou ...

  5. (整理).net实现条形码与二维码

    本文由来源网络的知识点组合而成,感谢分享的作者,文章结尾处给出查询资料连接. 条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符.常见的条形码是 ...

  6. window8.1中用户的管理员权限的提升方法

    1.使用命令netplwiz 2.点击确定后出现如下所示的内容,选择待修改的用户 3.然后点击属性,出现如图的内容 在上图中选中管理员左侧的单选按钮便可以了,将当前用户提升为管理员账户.

  7. The 2013 ACM-ICPC Asia Changsha Regional Contest - A

    Alice's Print Service Time Limit: 2 Seconds      Memory Limit: 65536 KB Alice is providing print ser ...

  8. TestCase--网站注册模块

    对于web测试,注册模块是必测的一个点,所以今天就来总结一下注册模块的测试用例 参考京东的注册页面 测试用例设计如下: 一.功能测试 1.  单击“免费注册”,页面是否正常跳转 2.  直接访问注册页 ...

  9. 带你快速了解CODESOFT 2015

    CODESOFT是知名的条码标签设计打印软件,现在又推出了最新版CODESOFT 2015,其新功能.大改进让人为之一振.下面跟随小编的脚步,走进CODESOFT 2015,看一看CODESOFT 2 ...

  10. CODESOFT 2015中的条形码对象该如何创建

     CODESOFT条码设计软件提供了大量适应行业要求的符号,以及创建二维条形码的选项.用户可以通过条形码对话框选择符号.定义其属性以及输入要编码的消息.下面小编带大家具体学习下如何在CODESOFT ...