我注意到,在不使用MultiDelimitSerDe时,我可以使用从text表到avro表的insert into语句。它也可以使用ROW FORMAT DELIMITED FIELDS TERMINATED BY“,”即单个字符。
我创建了2个表 - 1个文本表和1个avro表:
CREATE TABLE example1(示例STRING,example2 STRING,example3 STRING)行格式SERDER 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'WITH SERDEPROPERTIES(“field.delim”=“**”)存储为文本文件;
CREATE TABLE example2(示例STRING,example2 STRING,example3 STRING)存储为AVRO;
然后我将数据加载到example1表(由“**”分隔的文件),即
LOAD DATA INPATH'HDFS-path'INTO TABLE example1;
example1现在里面有数据。我想将example1中的数据插入到example2。
INSERT INTO TABLE example2 SELECT * from example1;
然而,这会产生“返回码2”错误。我不知道为什么我无法使用MultiDelimitSerDe插入数据,但我可以使用“ROW FORMAT DELIMITED FIELDS TERMINATED BY”来执行此操作。但是,我需要使用多分隔符。
有人可以帮我吗?
答案 0 :(得分:0)
您是否添加了所需的JAR文件?
'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' - 确保您拥有所需的JAR文件(hive_contrib.jar)。