hive指定多分隔符

hive在建表时,通常使用
ROW FORMAT DELIMITED
FIELDS TERMINATED BY "|#" 来限定数据中各个字段的分隔符,这种方式只支持单个分隔符,即:实际只会按照"|"进行分割,若想实现支持多分隔符,有如下方式:

hive从0.14版本以后支持MultiDelimitSerDe,可以比较优雅多解决多分隔符问题


ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="|#$")

参考:https://cwiki.apache.org/confluence/display/Hive/MultiDelimitSerDe

执行查询、join时报错:Class org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe not found
根据网上的方案:进入hive执行(jar包路径根据自己环境路径对应修改)


add jar /usr/hdp/3.1.5.0-152/hive/lib/hive-contrib.jar

CREATE EXTERNAL TABLE `table_tset`(
id string,
name string,
year string)                           
PARTITIONED BY (                                   
  `year` string)                                     
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="|#$")
LOCATION 
  'hdfs://CMBHHA/apps/hive/datahouse/test/table_tset'

posted @ 2022-09-29 11:07  whiteY  阅读(495)  评论(0)    收藏  举报