我注意到,当不使用MultiDelimitSerDe时,我可以在文本表到avro表中使用插入语句。它也适用于以","结尾的行格式分隔字段,即单个字符。
我创建了 2 个表 - 1 个文本表和 1 个 avro 表:
创建表 示例 1(示例字符串、示例2 字符串、示例 3 字符串 ) 行格式 塞尔德 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("FIELD.DELIM"="**") 存储为文本文件 ;
创建表 示例 2(示例字符串、示例2 字符串、示例 3 字符串 ) 存储为 AVRO;
然后我将数据加载到 example1 表中(文件由"**"分隔),即
将数据路径"HDFS 路径"加载到表 EXAMPLE1 中;
示例 1 现在包含数据。我想将数据从示例 1 插入到示例 2。
插入到表格示例 2 从示例 1 中选择 *;
但是,这会给出"返回代码 2"错误。我不知道为什么我无法使用 MultiDelimitSerDe 插入数据,但我可以使用"行格式分隔字段终止者"来执行此操作。但是,我需要使用多分隔符。
谁能帮我?
您是否添加了所需的 JAR 文件?
'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' - 确保您具有为此所需的JAR文件(hive_contrib.jar)。