【发布时间】:2020-12-09 07:00:46
【问题描述】:
我编写了一个 pyspark 程序,它从 cassandra 读取数据并写入 aws s3 。在写入 s3 之前,我必须执行 repartition(1) 或 coalesce(1) 因为这会创建一个文件,否则会在 s3 中创建多个 parquet 文件。 使用 repartition(1) 或 coalesce(1) 存在性能问题,我觉得创建一个大分区不是处理大量数据的好选择。 有哪些方法可以在 s3 中创建一个文件但不影响性能?
【问题讨论】:
-
如果你只想要一个输出文件,那么你可以使用 coalesce(1),另一方面,如果你想得到 n 个偶数大小的部分,你可以使用 repartition(n) -文件,理想情况下,您的文件输出大小应在磁盘中的 128MB 到 1 GB 之间,以便 Spark 在下次读取时有效地处理它们。