【问题标题】:Best method to save intermediate tables in pyspark在 pyspark 中保存中间表的最佳方法
【发布时间】:2020-09-24 08:26:14
【问题描述】:

这是我在 Stackoverflow 上的第一个问题。

我正在 Pyspark 中复制一个 SAS 代码库。 SAS 代码库生成并存储中间 SAS 数据集的分数(我上次统计时为 100 个),这些数据集用于交叉检查最终输出,也用于稍后的其他分析。

我的目的是以某种格式保存大量 Pyspark 数据帧,以便它们可以在单独的 Pyspark 会话中重复使用。我想到了 2 个选项:

  1. 将数据框保存为配置单元表。
  2. 将它们保存为镶木地板文件。

还有其他格式吗?哪种方法更快? parquet 文件或 csv 文件在将文件作为 Pyspark 数据帧重新读取时是否会出现与架构相关的问题?

【问题讨论】:

    标签: hadoop pyspark hive sas parquet


    【解决方案1】:

    最好的选择是使用 parquet 文件,因为它们具有以下优点:

    1. 3x 压缩节省空间
    2. 列格式,更快的下推
    3. 使用火花催化剂优化器进行优化
    4. 由于 parquet 包含与架构相关的信息,架构仍然存在。

    唯一的问题是确保您没有生成多个小文件,默认 parquet 块大小为 128 mb,因此请确保您的文件足够大。您可以重新分区数据以确保文件大小足够大

    【讨论】:

    • 非常感谢..这帮助了很多
    • 如果有帮助,请接受答案:)
    【解决方案2】:

    使用 Deleta Lake,迭代数据更改、可变架构、parquet 优势、轻松更新、跟踪查询、数据版本控制

    【讨论】:

      【解决方案3】:

      Parquet 是 pyspark 的默认设置并且运行良好。因此,您可以将其存储为镶木地板文件/配置单元表。在推送到 hdfs/hive 之前,如果源上的文件可能很小,您可以重新分区文件。如果数据量很大,请尝试使用合适的列对 hive 表进行分区。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-03
        • 2016-02-12
        • 2014-11-27
        • 2016-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多