我的表格结构如下。
CREATE TABLE db.TEST(
f1 string,
f2 string,
f3 string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
'input.regex'='(.{2})(.{3})(.{4})' )
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://nameservice1/location/TEST';
我试着在下面的表格中插入一条记录。
insert overwrite table db.TEST2
select '12' as a , '123' as b , '1234' as c ;
在尝试向表中插入数据时,遇到以下错误。
原因:java.lang.unsupportedoperationexception:regex-serde不支持org.apache.hadoop.hive.serde2.regexserde.serialize(regexserde)中的serialize()方法。java:289)
你知道怎么回事吗?
1条答案
按热度按时间wlzqhblo1#
你用错了serde类。org.apache.hadoop.hive.serde2.regexserde不支持序列化。看看源代码-serialize方法除了抛出
UnsupportedOperationException
例外情况:解决办法是
要使用另一个serde类:org.apache.hadoop.hive.contrib.serde2.regexserde,它可以使用格式字符串序列化row对象。应在中指定序列化格式
SERDEPROPERTIES
. 查看源代码了解更多详细信息。serde属性示例:
你的table是这样的: