代码之家  ›  专栏  ›  技术社区  ›  Dmitriy Apollonin

Vertica没有将所有数据导出到拼花地板,没有限制条款

  •  0
  • Dmitriy Apollonin  · 技术社区  · 7 年前

    当我试图从Vertica向本地车道出口拼花地板时,我看到了非常奇怪的行为。 参见示例:

    当我这么做的时候

    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
    

    但当我阅读结果拼花地板(使用pyarrow或Spark)时,我只得到 2 522 845 排。面向对象

    目录大小约为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行数,拼花地板输出相同的行数!目录大小约为350M。

    知道为什么吗?

    谢谢

    0 回复  |  直到 7 年前
        1
  •  1
  •   ya2410    7 年前

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

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

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

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

    推荐文章