做网站流程,建设一个网站要学什么,谷德设计网 景观,网站建设公司开发企业北京网站hive在建表时#xff0c;通常使用ROW FORMAT DELIMITEDFIELDS TERMINATED BY |# 来限定数据中各个字段的分隔符#xff0c;这种方式只支持单个分隔符#xff0c;即#xff1a;实际只会按照|进行分割#xff0c;若想实现支持多分隔符#xff0c;有…hive在建表时通常使用ROW FORMAT DELIMITEDFIELDS TERMINATED BY |# 来限定数据中各个字段的分隔符这种方式只支持单个分隔符即实际只会按照|进行分割若想实现支持多分隔符有如下几种方式1、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/MultiDelimitSerDe2、使用RegexSerDe需要写正则表达式3、重写 InputFormat 中 RecordReader 类中的 next 方法重写完成后打包成jar放入到Hive目录的lib文件夹下面。创建表的时候再指定INPUTFORMAT之后遇到的问题1、执行查询、join时报错Class org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe not found根据网上的方案1进入hive执行add jar /usr/hdp/3.1.5.0-152/hive/lib/hive-contrib.jar又报了如下的错误does not have following privileges for operation ADD [ADMIN] (state,code1)根据网上的方案2在hive-site.xml中添加如下配置重启hive服务还是不生效hive.aux.jars.pathfile:///usr/hdp/3.1.5.0-152/hive/lib/hive-contrib.jar问题先记下来后续有时间再解决这里通过对源文件进行逐行处理将多分隔符|#中的#替换为空字符从而变成单分隔符sed s/#//g data.txt new_data.txt