Hive上游为ORC格式的表,下游读取不完整

Posted 阿黄king

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive上游为ORC格式的表,下游读取不完整相关的知识,希望对你有一定的参考价值。

下游读取数据的时候,一直反复尝试,数据仍然不完整,理论上来说上游有四条数据,下游始终只能读到一条,反复排查后发现上游的任务都是spark类型,下游是用hive进行处理的时候会遇到这种问题,原因是下游的hive和上游的spark对于ORC格式的处理方式有所区别,spark底层对于读和写替换了原有的hive方案,所以导致两边不兼容,引发了数据不对齐的情况。

解决方案:spark.sql.hive.convertMetastoreOrc=false

查找了半天,在配置上修改他的格式转化策略,然后在尝试一下,问题解决。

遇到同类问题,采用spark.sql.hive.convertMetastoreParquet=false也可以解决问题。

上面这种情况是spark和hive的格式对齐问题导致的现象,如果上游是利用sparksql处理的hive表,下游也是hive进行处理的,也可以尝试set hive.optimize.index.filter=false,在运行sql之前先运行这个代码也可能解决问题。

以上是关于Hive上游为ORC格式的表,下游读取不完整的主要内容,如果未能解决你的问题,请参考以下文章

Spark Sql 从 Hive orc 分区表中读取,给出数组越界异常

Java读取HDFS上的ORC格式文件

用于ORC或RC格式的Hive Json SerDE

oushudb 中 orc 格式的使用

oushudb 中 orc 格式的使用

oushudb 中 orc 格式的使用