创建hive表时(分区表、内外表都适用),遇到双符号的切分符怎么办,比如:||

两个字段的例子 

# 1. 建表
create  EXTERNAL table b(
id double,
name string)
PARTITIONED BY (ds STRING) 
row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe'
with serdeproperties(
'input.regex'='(.*)\\|\\|(.*)',
'output.format.string'='%1$s %2$s %3$s')
stored as textfile;

# 2. 加载数据
hive> load data local inpath '/root/a' into table b partition (ds='2020-02-02');

# 3. 查看数据
hive> select * from b;
OK
01	huangbo
02	xuzheng
03	wangbaoqiang
Time taken: 0.098 seconds, Fetched: 3 row(s)

很多字段的例子 (16个字段,需要切15次)

注意:一行数据中有16个分隔符就要在‘input.regex’ = ‘切15次’ 

切分符是其他的话只需把||换成其他即可  




-- 数据 111||0.0||0.0||0.0||0.0||0.0||0.0||1||0.0||1||1||1||1||1||1||1


CREATE EXTERNAL TABLE  IF NOT EXISTS  ecar_match_gps (
terminalid BIGINT,
acceleration DOUBLE, 
direct DOUBLE, 
distance DOUBLE, 
height DOUBLE, 
lat DOUBLE,
lon DOUBLE,
satellitenum INTEGER,
speed DOUBLE, 
systime BIGINT, 
h3_5 BIGINT,
h3_7 BIGINT,
h3_10 BIGINT,
h3_13 BIGINT,
utc BIGINT,
roadid BIGINT
)  
PARTITIONED BY (ds STRING) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH  SERDEPROPERTIES(
'input.regex'='(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)'
)
stored as textfile;

load data local inpath '/root/4' into table bbbc partition (ds='2020-02-02');



CREATE EXTERNAL TABLE  IF NOT EXISTS  ecar_reserve_gps (
terminalid BIGINT,
acceleration DOUBLE, 
direct DOUBLE, 
distance DOUBLE, 
height DOUBLE, 
lat DOUBLE,
lon DOUBLE,
satellitenum INTEGER,
speed DOUBLE, 
systime BIGINT, 
h3_5 BIGINT,
h3_7 BIGINT,
h3_10 BIGINT,
h3_13 BIGINT,
utc BIGINT
)  
PARTITIONED BY (ds STRING) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH  SERDEPROPERTIES(
'input.regex'='(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)\\|\\|(.*)'
);

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值