在hive 外表关联文本的时候 有时会遇到不是一个长度的分割符比如"~@" 这种。这个时候使用shell命令多处理一步处理成单分隔符也可以,但是会有出错的风险。我们可以通过hive中指定的序列类来完成多分隔符的识别。
CREATE EXTERNAL TABLE text_mid1(
id STRING ,name STRING
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'
WITH SERDEPROPERTIES('input.delimited'='~@' ) -- 指定分隔符s
LOCATION '/tmp/multidelimit_txt'
;
需要在 SERDE中指定 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe 类
然后在WITH SERDEPROPERTIES 指定'input.delimited'='~@~'