hive表更改存储格式(从text改到orc)重跑数据以后查询报错:Invalid postscript

背景:

由于规范。除了ods层其他层的存储格式要用orc。

在从ods层同步一个表到dw层,结果创表的时候因为没有注意到这个,就直接把ods层的表结构copy了过来,只改了一下路径和表名,然后就同步了数据,后边发现不符合规范,所以要改成orc格式的

操作步骤:

drop原表重新创建

然后重新跑数据,这个时候查表,发现报错Invalid postscript,

去网上搜了一些案例说是

https://blog.csdn.net/qq_33536353/article/details/50970535

原因:
ORC格式是列式存储的表,不能直接从本地文件导入数据,只有当数据源表也是ORC格式存储时,才可以直接加载,否则会出现上述报错。

解决办法:
要么将数据源表改为以ORC格式存储的表,要么新建一个以textfile格式的临时表先将源文件数据加载到该表,然后在从textfile表中insert数据到ORC目标表中。

我就修改了一下我的代码,先创建一张临时表,然后在select 这张表。但是还是报错,但是又跑一遍就没有问题了,我就觉得很奇怪,然后去请教了一下大佬,

最后发现

1;dropl了表,但是没有删除路径,第一次重跑数据的时候,不会覆盖原有的数据,但是第二次跑的时候,就会把这个目录下的所有数据都覆盖掉,所以drop表的时候,要把目录也要删掉

原文地址:https://www.cnblogs.com/xuziyu/p/14658775.html