首页 > 解决方案 > 在 pyspark 中保存中间表的最佳方法

问题描述

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

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

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

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

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

标签: hadooppysparkhivesasparquet

解决方案


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

  1. 3x 压缩节省空间
  2. 柱状格式,更快的下推
  3. 使用火花催化剂优化器进行优化
  4. 模式持续存在,因为镶木地板包含与模式相关的信息。

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


推荐阅读