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来自定义输入输出格式