【发布时间】:2019-05-13 03:52:08
【问题描述】:
我有一个包含一百万条记录的数据框。它看起来像这样 -
df.show()
+--------------------+--------------------++-------------
| feature1| feature2| domain |
+--------------------+--------------------++-------------
|[2.23668528E8, 1....|[2.23668528E8, 1....| domain1 |
|[2.23668528E8, 1....|[2.23668528E8, 1....| domain2 |
|[2.23668528E8, 1....|[2.23668528E8, 1....| domain1 |
|[2.23668528E8, 1....|[2.23668528E8, 1....| domain2 |
|[2.23668528E8, 1....|[2.23668528E8, 1....| domain1 |
Spark 中的理想分区大小为 128 MB,假设域列有两个唯一值(域 1 和域 2),考虑到这一点,我有两个问题 -
如果我这样做
df.repartition("domain")并且如果一个分区无法容纳特定域密钥的所有数据,应用程序会失败还是会根据数据自动创建适合的分区?假设在上面的数据中,基于域键的重新分区已经发生,所以会有两个分区(唯一的键是 domain1 和 domain2)。现在假设 domain1 和 domain2 重复了 1000000 次,我将基于域进行自加入。因此,对于每个域,我将获得大约 10^12 条记录。考虑到我们有两个分区,并且在连接过程中分区的数量没有变化,那么这两个新的分区是否能够处理 1000000 条记录?
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql partition