如何将文本表中的数据(使用MultiDelimitSerDe)插入Avro Table?

时间:2015-01-29 22:08:04

标签: hadoop hive hql hiveql

我注意到,在不使用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”来执行此操作。但是,我需要使用多分隔符。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您是否添加了所需的JAR文件?

'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' - 确保您拥有所需的JAR文件(hive_contrib.jar)。