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 能力,而且应该慢得多。
尝试从 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 能力,而且应该慢得多。