数据类型

Hive基本的数据类型:

Hive集合数据类型:

另外还有一个复合数据类型,可以综合上面的数据类型组合到一起。

·          union: UNIONTYPE<data_type, data_type, ...>

类型说明

时间戳

支持传统的unix时间戳,可选的纳秒级精度。

支持的转换:

l        整型数值类型:解读为以秒为单位的UNIX时间戳

l        浮动点数值类型:解读为以秒和小数精度为单位的UNIX时间戳。

l        字符串:JDBC兼容的java.sql.Timestamp格式“YYYY-MM-DD HH:MM:SS.fffffffff”(9位小数位精度)

时间戳被解释是与timezone无关,存储为从UNIX纪元的偏移量。提供便利的UDF和时区转换(to_utc_timestamp,from_utc_timestamp)。

所有现有datetime的UDF(月,日,年,小时,等)可以工作于TIMESTAMP数据类型。

限定符

Hive默认的限定符:

下面两个建表语句是一样的。

隐式的限定符语句:

CREATE TABLEemployees (

name  STRING,

salary  FLOAT,

subordinatesARRAY<STRING>,

deductions  MAP<STRING, FLOAT>,

address  STRUCT<street:STRING, city:STRING,state:STRING, zip:INT>);

显式的限定符语句:

CREATE TABLEemployees (

name  STRING,

salary  FLOAT,

subordinatesARRAY<STRING>,

deductions  MAP<STRING, FLOAT>,

address  STRUCT<street:STRING, city:STRING,state:STRING, zip:INT>

)

ROW FORMATDELIMITED

FIELDSTERMINATED BY '\001'

COLLECTION ITEMSTERMINATED BY '\002'

MAP KEYSTERMINATED BY '\003'

LINES TERMINATEDBY '\n'

STORED ASTEXTFILE;

要导入的文件格式

John  Doe^A100000.0^AMary  Smith^BTodd Jones^AFederal  Taxes^C.2^BStateTaxes^C.05^BInsurance^C.1^A1 Michigan Ave.^BChicago^BIL^B60600

Mary  Smith^A80000.0^ABill  King^AFederal Taxes^C.2^BState Taxes^C.05^BInsurance^C.1^A100 Ontario St.^BChicago^BIL^B60601

Todd Jones^A70000.0^AFederalTaxes^C.15^BState Taxes^C.03^BInsurance^C.1^A200 Chicago Ave.^BOak Park^BIL^B60700

Bill  King^A60000.0^AFederal  Taxes^C.15^BState  Taxes^C.03^BInsurance^C.1^A300 Obscure Dr.^BObscuria^BIL^B60100

下面是导入首行记录的格式样本结构:

{

"name":  "John Doe",

"salary": 100000.0,

"subordinates": ["MarySmith", "Todd Jones"],

"deductions": {

"Federal Taxes": .2,

"State Taxes":  .05,

"Insurance":  .1

},

"address":{

"street": "1 Michigan Ave.",

"city":  "Chicago",

"state":  "IL",

"zip":  60600

}

}

当然我们可以自己可以自定列值的限定符,如下:

CREATE TABLEemployees (

name STRING,

salary FLOAT,

subordinates ARRAY<STRING>,

deductions MAP<STRING, FLOAT>,

address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT>

)

ROW FORMATDELIMITED

FIELDSTERMINATED BY ','

COLLECTION ITEMSTERMINATED BY '|'

MAP KEYSTERMINATED BY ':';

注意:

1.      由于field, collection, and key-value的分隔默认就是TEXTFILE格式,所以上面可以省略掉STORED AS TEXTFILE子句。

2.      由于目前hive支持的行分隔符只有/n(换行符),所以LINES TERMINATED BY '\n'子句也可以去掉。

3.      关于怎么制作Hive默认分隔符的数据文件见:http://www.myexception.cn/software-architecture-design/1351552.html

按表的定义文件的格式:

John Doe,100000.0,MarySmith|Todd Jones,Federal Taxes:.2|State Taxes:.05|Insurance:.1,1 MichiganAve.|Chicago|IL|60600

MarySmith,80000.0,Bill King,Federal Taxes:.2|State Taxes:.05|Insurance:.1,100Ontario St.|Chicago|IL|60601

ToddJones,70000.0,,Federal Taxes:.15|State Taxes:.03|Insurance:.1,200 ChicagoAve.|Oak Park|IL|60700

BillKing,60000.0,,Federal Taxes:.15|State Taxes:.03|Insurance:.1,300 ObscureDr.|Obscuria|IL|60100

导入数据:

load data localinpath '/app/hadoop/data/employees2' overwrite into table employees;

查看数据:

hive(default)> select * from employees2;

OK

John Doe        100000.0        ["Mary Smith","ToddJones"]     {"FederalTaxes":0.2,"State Taxes":0.05,"Insurance":0.1}        {"street":"1 Michigan Ave.","city":"Chicago","state":"IL","zip":60600}

Mary Smith      80000.0 ["Bill King"]   {"Federal Taxes":0.2,"StateTaxes":0.05,"Insurance":0.1}        {"street":"100 Ontario St.","city":"Chicago","state":"IL","zip":60601}

Todd Jones      70000.0 []      {"FederalTaxes":0.15,"State Taxes":0.03,"Insurance":0.1}       {"street":"200 Chicago Ave.","city":"Oak Park","state":"IL","zip":60700}

Bill King       60000.0 []      {"FederalTaxes":0.15,"State Taxes":0.03,"Insurance":0.1}       {"street":"300 Obscure Dr.","city":"Obscuria","state":"IL","zip":60100}

Time taken:0.085 seconds, Fetched: 4 row(s)

参考:

1.Hive编程指南

2.https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types

hive学习笔记之-数据类型的更多相关文章

  1. hive学习笔记之一:基本数据类型

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. hive学习笔记之三:内部表和外部表

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. hive学习笔记之四:分区表

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. hive学习笔记之五:分桶

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. hive学习笔记之六:HiveQL基础

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. hive学习笔记之七:内置函数

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. hive学习笔记之九:基础UDF

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. hive学习笔记之十:用户自定义聚合函数(UDAF)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<hive学习笔记>的第十 ...

  9. hive学习笔记之十一:UDTF

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. jjyq app登录接口报:“内容类型不支持”???已解决

    1.在 app上进行登录操作,成功. 2.通过fiddler抓包得到jjyq登录接口的url.param.header. 3.在pycharm中使用requests发起请求,运行报错:内容类型不支持?

  2. 简单了解一下事件循环(Event Loop)

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  3. Entity Framework 6.0 入门系列 第一篇

    Entity Framework 6.0 入门系列 第一篇 好几年前接触过一些ef感觉不是很好用,废弃.但是 Entity Framework 6.0是经过几个版本优化过的产物,性能和功能不断完善,开 ...

  4. Flutter学习笔记(21)--TextField文本框组件和Card卡片组件

    如需转载,请注明出处:Flutter学习笔记(21)--TextField文本框组件和Card卡片组件 今天来学习下TextField文本框组件和Card卡片组件. 只要是应用程序就少不了交互,基本上 ...

  5. c语言的图形库

    图形库链接http://www.easyx.cn/ 使用图形库头文件easyx.h或graphics.h 同样在里面下载图形库帮助文档进行查询 vs vc都可使用图形库 图形库窗口: initgrap ...

  6. JAVA笔记【类】

    java的概述和编程基础在这里我就不过多的强调了,因为已经有学习C和C++的基础了,我在这里强调一下类和对象. [一]类的定义: Java类的定义包括类声明和类体两个部分,其中类体又包含变量声明,方法 ...

  7. Leetcode之二分法专题-278. 第一个错误的版本(First Bad Version)

    Leetcode之二分法专题-278. 第一个错误的版本(First Bad Version) 你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新版本没有通过质量检测.由于每个版 ...

  8. 原生js之Math对象

    1.比较方法(常用) Math.min() //求一组数中的最小值 不能是数组,和对象等等. Math.max() //求一组数中的最大值eg:Math.min(5,3,5) // 3 2.取整(常用 ...

  9. 使用docker快速搭建Permeate渗透测试系统实践

    一.背景 笔者最近在做一场Web安全培训,其中需要搭建一套安全测试环境:在挑选渗透测试系统的时候发现permeate渗透测试系统比较满足需求,便选择了此系统:为了简化这个步骤,笔者将系统直接封装到了d ...

  10. 如果使用tf::transform进行简单的不同frame间的pose转换

    tf转换,分为两部分:broadcaster和listener.前者是tf的发布者,后者是接收者.我们如果要建立一个完整的tf体系,需要自己先生成tf信息用broadcaster发布出去,然后再在需要 ...