0

问题:将带有 ORC 文件的分区文件夹复制到另一个外部分区 ORC 表后,行数不正确

我在 dev 模式中有这个员工表。该表是一个外部分区的 ORC 表。

CREATE EXTERNAL TABLE dev.employee(empid string, empname string, update_gmt_ts timestamp) PARTITIONED BY (partition_upd_gmt_ts string) 存储为 orc location '/dev/employee';

我在这些分区文件夹中有兽人数据文件。

hdfs dfs -ls /dev/employee

drwxr-xr-x - user1 group1 0 2017-02-08 10:25 /dev/employee/partition_upd_gmt_ts=201609 drwxr-xr-x - user1 group1 0 2017-02-08 10:24 /dev/employee/partition_upd_gmt_ts=201610

当我执行这个查询

从 dev.employee 中选择 count(*),其中 1=1;

1000 -- 正确的行数

我在 prod 模式中有另一个员工表的表副本。这也是一个外部分区的 ORC 表。我也想将相同的数据推送到该表中。

创建外部表 prod.employee(empid 字符串,empname 字符串,update_gmt_ts 时间戳)分区(partition_upd_gmt_ts 字符串)存储为 orc 位置'/prod/employee';

所以我做了一个hdfs副本

hdfs dfs -cp /dev/employee/* /prod/employee/

数据被复制了。

hdfs dfs -ls /prod/employee

drwxr-xr-x - user1 group1 0 2017-02-08 10:25 /prod/employee/partition_upd_gmt_ts=201609 drwxr-xr-x - user1 group1 0 2017-02-08 10:24 /prod/employee/partition_upd_gmt_ts=201610

但是当我执行 count 查询时,我得到了零行。

你能帮我解释一下为什么我没有得到与行数相同的 1000。

从 prod.employee 中选择 count(*),其中 1=1;

0 -- 错误的行数

4

0 回答 0