hive

1.下载序列化包

2.添加json序列化包 

add jar /Users/zhanxf/hadoop/hive/lib/json-serde-1.3.8-jar-with-dependencies.jar;

add jar /Users/zhanxf/hadoop/hive/lib/json-udf-1.3.8-jar-with-dependencies.jar;

3.建立hive表

DROP TABLE IF EXISTS item;

CREATE TABLE item

(

itemid STRING,

rating_normal INT,

offer_count INT,

rating_star FLOAT,

image STRING,

item_status STRING,

pop INT,

rating_bad INT,

promo_source INT,

model_discount INT,

mtime BIGINT,

price_before_discount INT,

rcount_with_context INT,

shopid STRING,

discount STRING,

touch_time BIGINT,

can_use_wholesale BOOLEAN,

sold INT,

show_discount INT,

sub_catid INT,

ctime BIGINT,

price_min_sp STRING,

distance INT,

name STRING,

attr_status STRING,

currency STRING,

country STRING,

liked BOOLEAN,

campaignid STRING,

show_official_shop_label_in_normal_position BOOLEAN,

flag INT,

stockout_time BIGINT,

third_catid INT,

is_pre_order BOOLEAN,

show_free_shipping BOOLEAN,

seller_promotionid BIGINT,

show_shopee_verified_label INT,

ads_keyword STRING

)

ROW FORMAT SERDE ‘org.openx.data.jsonserde.JsonSerDe’

STORED AS TEXTFILE;

LOAD DATA LOCAL INPATH “/Users/zhanxf/hadoop/test/item” OVERWRITE INTO TABLE item;

create table score(name string, score map)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘\t’

COLLECTION ITEMS TERMINATED BY ‘,’

MAP KEYS TERMINATED BY ‘:’;

PARTITIONED BY (country STRING, state STRING);

CREATE TABLE item3

(

itemid STRING,

rating_normal INT,

rating_count array,

models array>

)

ROW FORMAT SERDE ‘org.openx.data.jsonserde.JsonSerDe’

STORED AS TEXTFILE;

结构体查询:select models[0].sku from item3;

复杂数据类型

ARRAY:

ARRAY类型是由一系列相同数据类型的元素组成,这些元素可以通过下标来访问。

MAP:

我们可以通过userlist[‘username’]来得到这个用户对应的password;

STRUCT:

STRUCT可以包含不同数据类型的元素。这些元素可以通过”点语法”的方式来得到所需要的元素

UNION:

UNIONTYPE,他是从Hive 0.7.0开始支持的

基本数据类型

TINYINT    1byte,-128 ~ 127

SMALLINT    2byte,-32,768 ~ 32,767

INT    4byte,-2,147,483,648 ~ 2,147,483,647

BIGINT    8byte,-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

BOOLEAN

FLOAT    4byte单精度

DOUBLE    8byte双精度

STRING

BINARY         从Hive0.8.0开始支持

TIMESTAMP         从Hive0.8.0开始支持

DECIMAL         从Hive0.11.0开始支持

CHAR         从Hive0.13.0开始支持

VARCHAR         从Hive0.12.0开始支持

DATE         从Hive0.12.0开始支持

文件存储格式

RCFILE

行列存储相结合的方式。一行的文件在同一块上,避免跨块读取。块上数据按列存储,便于压缩和快速的列存取。

SEQUENCEFILE

SequenceFile是一种二进制文件,其具有使用方便、可分割、可压缩的特点。

压缩选择:NONE, RECORD, BLOCK。 Record压缩率低,一般建议使用BLOCK压缩。

配置项:hive.exec.compress.output=true

io.seqfile.compression.type=BLOCK

TEXTFILE

默认格式,数据不做压缩,磁盘开销大,数据解析开销大,但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作

自定义格式

用可以通过实现inputformat和outputformat来自定义输入输出格式

    原文作者:zhan81649
    原文地址: https://www.jianshu.com/p/f07e20794faa
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞