问题现象:
某集群hive表新增字段,然后插入数据。使用hive查询正常,但是使用hetu查询报错。报错堆栈如下:
Caused by: io.prestosql.spi.PrestoException: Error opening Hive split hdfs://hacluster/user/xxx/hive/xx/xxx/sysp_year=2021/sysp_month=07/sysp_day=16/part-00000-83acb0c2-e980-4e78-87d4-b6aacc70ce68.c000.snappy.orc (offset=0, length=67017): Malformed ORC file. Can not read SQL type timestamp from ORC stream .tag
问题原因:
hive默认支持按orc文件里面的schema顺序去读取字段,而hetu默认是顺序读取orc文件的字段,所以导致新增字段之后,读取的字段类型不匹配,而导致报错。
解决方法:
hetu有参数hive.orc.use-column-names = true 来控制是否按orc文件的schema顺序来读取字段。需要添加到hive数据源的hive.propreties文件,即console数据源的自定义参数配置。
如果是本地hive,则需要在hsboker的自定义参数。