Hive SerDe 使用

本文介绍如何在Hive中利用RegexSerDe解析特定格式的数据,并使用JsonSerDe处理JSON格式的数据。具体包括所需jar包、创建表的HiveQL语句及加载数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:hadoop-2.7.2,hive-1.2.1

RegexSerDe

所需jar包:{HIVE_HOME}/lib/hive-contrib-1.2.1.jar

<1>. 根据数据格式建表

CREATE TABLE if not exists dbname.tbl_name(  
  chexing STRING,
  source_name STRING,
  brand STRING, 
  brandid STRING, 
  model STRING, 
  chexingid STRING,
  make STRING,
  modelid STRING  
  )
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
WITH SERDEPROPERTIES ('input.regex' = '\\{"chexing": "(.*?)", "source_name": "(.*?)", "brand": "(.*?)", "brandid": "([0-9]+)", "model": "(.*?)", "chexingid": "([0-9]+)", "make": "(.*?)", "modelid": "([0-9]+)"\\}'
,'output.format.string' = '%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s')
STORED AS TEXTFILE; 

<2>. load data to hive

LOAD DATA LOCAL INPATH './filename.txt' OVERWRITE INTO TABLE dbname.tbl_name

JsonSerDe

所需jar包:{HIVE_HOME}/lib/json-serde-1.3.8-jar-with-dependencies.jar

<1>. 根据数据格式建表

CREATE TABLE dbname.tablename (
api_name             string,
request_time         string,
response_time        string,
elapse_time          string,
status               int,
error_code           int,
error_msg            string,
`data`              map<string,array<string>>,
query_info           map<string,string>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE;

<2>. load data to hive

LOAD DATA LOCAL INPATH './filename.txt' OVERWRITE INTO TABLE  dbname.tablename;

Refercence:

  1. https://github.com/rcongiu/Hive-JSON-Serde
  2. http://blog.youkuaiyun.com/pzasdq/article/details/52662241
  3. http://blog.youkuaiyun.com/SunnyYoona/article/details/70170173
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值