在pyspark中保存中间表的最佳方法

nkoocmlb  于 2021-05-31  发布在  Hadoop
关注(0)|答案(3)|浏览(488)

这是我关于堆栈溢出的第一个问题。
我正在pyspark中复制sas代码库。sas代码库生成并存储中间sas数据集的分数(我上次计数时为100),用于交叉检查最终输出,也用于稍后的其他分析。
我的目的是以某种格式保存大量pysparkDataframe,以便它们可以在单独的pyspark会话中重用。我想到了两个选择:
将Dataframe另存为配置单元表。
将它们另存为Parquet文件。
还有其他格式吗?哪种方法更快?将Parquet文件或csv文件作为pysparkDataframe重新读取时是否会出现与模式相关的问题?

ig9co6j1

ig9co6j11#

使用DeletaLake,迭代数据更改、可变模式、Parquet优势、轻松更新、跟踪更改、数据版本控制

3zwtqj6y

3zwtqj6y2#

最好的选择是使用Parquet文件,因为它们具有以下优点:
3倍压缩节省空间
列格式,更快的下推
使用spark catalyst optimizer优化
模式持续存在,因为parquet包含与模式相关的信息。
唯一的问题是确保您没有生成多个小文件,默认的Parquet块大小是128 mb,所以请确保您有足够大的文件。您可以重新划分数据,以确保文件大小足够大

0s0u357o

0s0u357o3#

parquet是pyspark的默认设置,运行良好。所以你可以把它们存储为Parquet文件/Hive桌。在推送到hdfs/hive之前,如果源上有小文件,您可以重新分区文件。如果是一个大数据,请尝试用合适的列对配置单元表进行分区。

相关问题