[Apache Doris] hive 2 doris:ParseError, Invalid column selected _colXXX

数据分析

2020-09-29

3

0

 

可能原因1

doris中的表结构和字段类型与hive中表字段结构不一致

比如spark计算后生成的orc表头和doris中的不一致。如下为hive和spark分别生成的orc文件表头,

不管hive or spark,表头都需要和doris load语句中声明一致:

 

col0, col1, col2可以理解为hive中的字段占位符; 而spark生成的orc文件表头是字段名, 如果load中使用占位符,会匹配失败,导致不能成功导入数据

解决办法:

  1. 使用hive计算并导入doris
    or
  2. 调整load语句,orc中是占位符时则load使用占位符;orc中是字段名则load语句使用字段名

 

可能原因2

doris中字段不满足实际数据存储需求

比如doris中字段为varchar(100), 而实际数据长度超过100长度。

解决办法:

  1. 字段不重要, etl时截断或者这个字段不导入doris
    or
  2. doris表字段长度增加

 

可能原因3

load hdfs中的orc文件时,有的orc文件为空。 一般hive或者spark导出结算结果到hdfs中时,结果会保存为多个文件, 在生成doris 导入语句时通常用星号代表全部orc文件。

此时如果由于spark或者hive某些配置,导致生成的orc文件没有数据(大小为49b),会导致doris读取不到表头,进而导入失败。

解决办法

调整spark或者hive配置,使之生成的每一个orc文件都有内容(至少得有表头)

 

 

如何查询hdfs中hive文件的字段(表头,也叫元数据):hive --orcfiledump hdfs文件路径

 

 

欢迎添加微信,互相学习↑↑↑ -_-

发表评论

全部评论:0条

白老虎

programming is not only to solve problems, ways to think