在spark中,我试图将每个分区中的行数限制为100。但是我不想把它写在文件里。在覆盖
记录之前,我需要对文件执行更多操作。您可以使用重分区。
要在每个分区中保留n条记录,您需要将数据重新分区为total_data_count/repartition=100
例如:我现在有100条记录,如果我想让每个分区有10条记录,那么我必须将我的数据重新分区为10部分d .repartition(10)
>>> df=spark.read.csv("/path to csv/sample2.csv",header=True)
>>> df.count()
100
>>> df1=df.repartition(10)
>>> df1
... .withColumn("partitionId", spark_partition_id())
... .groupBy("partitionId")
... .count()
... .orderBy(asc("count"))
... .show()
+-----------+-----+
|partitionId|count|
+-----------+-----+
| 6| 10|
| 3| 10|
| 5| 10|
| 9| 10|
| 8| 10|
| 4| 10|
| 7| 10|
| 1| 10|
| 0| 10|
| 2| 10|
+-----------+-----+
这里可以看到每个分区有10条记录