Spark避免小分区

时间:2018-04-08 14:12:09

标签: apache-spark pyspark

我有一个用户“表”,我想按“位置”进行分区。但是在尝试使用时:

usersNewDf.write.partitionBy("location") \
    .parquet("....../parquet/users.parquet")

我收到很多“尝试*”文件,我想我看到它可能是因为我有太多小分区?检查时哪个看似真实。许多地方只有1个用户。所以我想为那些用户我清理位置。

我想知道,这是最好的方法吗?是否可以按位置进行分区而不清除不常见的位置?也许如果分区太小,可以将它们分组?

如果我要清除不常见的位置,我可能会有大量没有位置的用户,所以1个大分区。这个可以吗?或者我该怎么做才能改善这种情况?

在这种情况下,我还应该使用partitionBy还是repartition

1 个答案:

答案 0 :(得分:1)

你应该在write.partitionBy(“location”)之前重新分区(“location”)否则多个工作分区(在数据混乱之后)将写入同一个文件分区