hadoop - 在 pyspark 中保存中间表的最佳方法
问题描述
这是我在 Stackoverflow 上的第一个问题。
我正在 Pyspark 中复制一个 SAS 代码库。SAS 代码库生成并存储中间 SAS 数据集的分数(我上次计算时为 100),这些数据集用于交叉检查最终输出,也用于稍后的其他分析。
我的目的是以某种格式保存大量 Pyspark 数据帧,以便它们可以在单独的 Pyspark 会话中重复使用。我想到了2个选项:
- 将数据框保存为配置单元表。
- 将它们保存为镶木地板文件。
还有其他格式吗?哪种方法更快?parquet 文件或 csv 文件在将文件作为 Pyspark 数据帧重新读取时是否会出现与架构相关的问题?
解决方案
最好的选择是使用 parquet 文件,因为它们具有以下优点:
- 3x 压缩节省空间
- 柱状格式,更快的下推
- 使用火花催化剂优化器进行优化
- 模式持续存在,因为镶木地板包含与模式相关的信息。
唯一的问题是确保您没有生成多个小文件,默认 parquet 块大小为 128 mb,因此请确保您的文件足够大。您可以重新分区数据以确保文件大小足够大
推荐阅读
- sql-server - 将数据从 PostgreSQL 迁移到 SQL Server 2012 最佳实践
- javascript - 使用 react-google-map 时如何适应多重圆圈?
- python-3.x - SageMaker 脚本模式服务
- scala - SBT 中的每个项目任务
- python - 在没有 buildozer 的情况下导入外部库 Kivy
- python - Numpy 生成最多包含 N 个的二进制数组
- ios - 我的视频离开屏幕,但留在它的 UIView
- incoming-mail - Google 使用哪些国家/地区发送 Google Mail?
- angular - @Input 父子组件绑定
- python - 将 numpy 数组转换为迭代器