一、背景
- 由于历史原因, 有些表并未使用 ORC 格式,而是直接才用了 TextFile 格式, 随着业务的迭代, 表越变越大,导致存储资源十分紧张。为了节省存储空间,经过调研,我们决定采用 ORC 格式,大概可以节省 75% 的存储空间, 对于 PB 级别的数据, 是十分可观的。
- 在做完 ORC 格式后,我们又对这些表进行拉链操作。拉链的过程,遇到一个十分怪异的错误。不管使用 Hive 还是 Spark 都会抛出异常,导致 SQL 失败。
Spark 报错:
Most recent failure:
Lost task 1.1 in stage 0.0 (TID 2, master02, executor 4): java.lang.ClassCastException: org.apache.spark.sql.catalyst.expressions.MutableAny cannot be cast to org.apache.spark.sql.catalyst.expressions.MutableLong
at org.apache.spark.sql.catalyst.expressions.SpecificInternalRow.s