【hive/beeline/spark】建表多分隔符,报:org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe
前言
大数据平台数据入湖逻辑执行方式从Impala改为beeline(连接hive)的方式后,在sql语句层面上做了一些调整(如DDL语句、分区字段等)。而后又发现,切换后hive默认不支持多字符作为行分隔符,设置多个字符==!@!==,但只会识别第一个字符!,后续@会被当做字段值识别,导致数据被污染:
……
ROW FORMAT DELIMITED FIELDS TERMINATED BY '!@!'
……
HIVE SHELL调整
于是调整一下建表语句:
……
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ('field.delim'='!@!')
……
报错
hive shell执行报错:
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.for