Vertica 不会导出到 parquet 所有没有限制子句的数据

Vertica does not export to parquet all the data without limit clause

尝试从 Vertica 导出到 PARQUET 到本地驱动器时,我看到了非常奇怪的行为。 参见示例:

当我做的时候

EXPORT TO PARQUET (directory = '/data') over (partition by install_date) 
    AS select field1, field2 from table where install_date >= 'some_date';

Vertica 说:

Rows Exported
---------------
  16 405 136

但是当我读取结果 parquet(使用 pyarrow 或 Spark)时,我只得到 2 522 845 行。 oO

目录大小约为59M。

经过几个小时的测试,我发现如果我执行相同的命令但使用具有巨大价值的 limit 子句,它就可以工作!

EXPORT TO PARQUET (directory = '/data') over (partition by install_date) 
   AS select field1, field2 from table where install_date >= 'some_date' limit 10000000000;

然后Vertica导出相同的16 405 136行数,parquet也有相同的行数!目录大小在350M左右。

知道为什么吗?

谢谢。

您 运行 在多节点 Vertica 集群上吗? 如果是这样,则每个节点将其 "part"(段)数据导出到其自己的 /data 目录中的文件。

您需要从所有节点收集这些文件或导出到共享位置,例如 NFS / aws S3。

使用LIMIT x Vertica首先将数据收集到执行查询的节点,然后只有该节点将数据导出到文件中。

这种方法没有利用 Vertica 的 mpp 能力,而且应该慢得多。