Apache spark 避免火花的小隔板

Apache spark 避免火花的小隔板,apache-spark,pyspark,Apache Spark,Pyspark,我有一个用户“表”,我想按“位置”进行分区。但是,在尝试使用时: usersNewDf.write.partitionBy("location") \ .parquet("....../parquet/users.parquet") 我得到了很多“尝试*”文件,我想我看到了可能是因为我有太多的小分区?这似乎是真的。许多位置只有一个用户。所以我想,对于那些用户,我会清除位置 我在想,这是最好的办法吗?是否可以在不清除不常见位置的情况下按位置进行分区?比如如果分区太小,把它们分组 如果我要

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

usersNewDf.write.partitionBy("location") \
    .parquet("....../parquet/users.parquet")
我得到了很多“尝试*”文件,我想我看到了可能是因为我有太多的小分区?这似乎是真的。许多位置只有一个用户。所以我想,对于那些用户,我会清除位置

我在想,这是最好的办法吗?是否可以在不清除不常见位置的情况下按位置进行分区?比如如果分区太小,把它们分组

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



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

您应该在写入之前重新分区(“位置”)。partitionBy(“位置”)否则多个工作分区(在数据洗牌后)将写入同一个文件分区

哦,这就是我得到大量小文件的原因吗?是的-相同的位置可以分散在集群中,每个编写器创建自己的“部分”文件-如果您首先重新分区,则只会得到一个