【问题标题】:spark creating too many partitions火花创建太多分区
【发布时间】:2015-12-24 06:52:10
【问题描述】:

我有 3 个 Cassandra 节点集群,其中有 1 个种子节点和 1 个 spark 主节点和 3 个从节点,有 8 GB 内存和 2 个内核。这是我的 spark 工作的输入

spark.cassandra.input.split.size_in_mb 67108864

当我使用此配置集运行时,我看到创建了大约 768 个分区,其中大约 89.1 MB 的数据大约 1706765 条记录。我无法理解为什么要创建这么多分区。我使用的是 Cassandra spark 连接器 1.4 版,因此也修复了有关输入拆分大小的错误。

只有 11 个唯一的分区键。我的分区键具有始终为测试的 appname 和始终为 0-10 的随机数,因此只有 11 个不同的唯一分区。

为什么会有这么多分区,为什么 spark 决定要创建多少分区

【问题讨论】:

  • ~70 TB 每个拆分?真的吗? :) sc.defaultParallelism 是什么?
  • 总数据为 89.1 MB,其中 1706765 分为 768 个分区
  • sc.defaultParallelism 是 spark 1.4 中的默认值,我没有在代码的任何地方设置它

标签: cassandra apache-spark


【解决方案1】:

Cassandra 连接器不使用 defaultParallelism。它检查 C*(2.1.5 后)中的系统表,以估计给定表中有多少 MB 数据。读取此数量并除以输入拆分大小以确定要进行的拆分数量。

https://github.com/datastax/spark-cassandra-connector/blob/master/doc/FAQ.md#what-does-inputsplitsize_in_mb-use-to-determine-size

如果您使用的是 C*

【讨论】:

  • 我使用的是 2.1.8。我的输入分割大小也很高。我无法弄清楚为什么会有这么多分区。
  • 还将我的数据增加到大约 900 万条记录,大约 300 mb 的数据内存仍然是相同数量的 patitions
  • 你检查过系统表吗?它为您正在阅读的表格报告了多少空间?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-26
  • 1970-01-01
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
相关资源
最近更新 更多