Greenplum数据库好久不用都有些生疏了,今天在处理个数据分析需求时,碰到个问题,记录下排查过程。
外部表建好后,查询时爆出如下错,(一惊,好久没碰到问题了)
ERROR: All 1000 first rows in this segment were rejected. Aborting operation regardless of REJECT LIMIT value. Last error was: invalid byte sequence for encoding "UTF8": 0xc8dd (seg0 slice1 sdw1:40000 pid=28307)
DETAIL: External table zx_temp_dnslog, file gpfdist://smdw:8003/100*.bak
原以为是字符集的问题,查了GP库的字符集,客户端的字符集等,改了GBK等等,没解决!!
查看数据文件,file下数据文件,一看傻眼了,原来是gzip的文件,但是文件末尾没有带.gz
问题应该就是这了,
将文件名批量改为.gz后,外部表查询正常。
原因:GP外部表在使用压缩文件作为引用数据时,会使用gzip进行解压的,
如果在操作系统下,使用gzip 解压一个不带.gz的文件,也是不认的。
gzip: asaa.txt.bak: unknown suffix -- ignored
--asaa.txt是gzip后的改名文件。