您的位置:首页 > 其它

hive数据类型和文件格式

2017-12-14 20:12 453 查看
数据类型问题:

基本数据类型

tinyint :1bit有符号整数

smallint :2bit有符号整数

int :4bit有符号整数

bigint :8bit有符号整数

boolean :布尔类型true或者false

float :单精度浮点数

double :双精度浮点数

string :字符序列。可以指定字符集。可以使用单引号或者双引号

timestamp :可以是整数小数字符串;代表unix新纪元时间1970年一月一日

binary

集合数据类型

struct

map

array

例子:

CREATE TABLE employees

(

    name STRING COMMENT '张三',

    salary FLOAT COMENT '10000.00',

    subordinates ARRAY<STRING> COMMENT '李四 王五',

    deductions MAP<STRING,FLOAT> COMMENT '税,1000.00,养老金,100.00',

    address STRUCT<street:STRING,city:STRING,state:STRING,zip:INT> COMMENT 'srteet:中华,city:北京,state:朝阳,zip:12'

);

分割符问题:

逗号分隔符:csv文件

制表符分隔符:tsv文件

\n 换行符

^A 用于分割字段(列),可以用\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<sheet:STRING,id:INT>

)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\001'

COLLECTIONS TERMINATED BY '\002'

MAP KEYS TERMINATED BY '\003'

LINES TERMINATED BY '\n'

STORED AS TEXTFILE;

ROW FORMAT DELIMITED必须写在前面,列分割符是\001 集合分隔符是\002 map分割符是\003 行分隔符是换行符(只能是它)使用textfile文件格式

读时模式问题:

传统数据库在用户写入数据时会对模式进行检查,是写时模式

hive在查询时进行检查,是写时模式。

当发现文件内容与模式不匹配时:

比如字段个数少于模式定义的个数,则会返回很多null值

某一字段时数值型的,但是返回时发现不是数值型,返回mull

其他情况下,hive会尽力将各种错误恢复过来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐