我正在使用三节点Cassandra 群集与六个Spark工作人员,每个群集都有 1 Core 和 2GB RAM 。 使用Spark Application,我试图从Cassandra Table中获取整个数据,该表有超过300k行,并尝试进行聚合。
但是花费大量时间从Cassandra获取数据。我也经历了Spark UI,我看到 Spark阶段有3个分区,其中两个执行速度非常快(几秒钟内),但第三个执行时间很长(7分钟)。
我还尝试重新分配CassandraRDD以增加任务数量并将任务分配给所有六名工作人员,但没有找到任何解决方案。
答案 0 :(得分:1)
要调整CassandraRDD创建的任务数,您需要调整spark.cassandra.input.split.size。这决定了将要生成多少实际的Spark分区。
spark.cassandra.input.split.size approx number of Cassandra partitions in a Spark partition 100000
请注意,这会控制C *分区的数量,而不是spark分区中的C *行。这也是一个估计值,因此您无法保证这个确切数量的令牌将位于Spark分区中。
如果您继续看到某些分区的行为比其他分区慢,我会调查该分区的节点运行状况,并检查热点。