2015-04-03 78 views
2

重新分区CassandraRDD我使用三个节点的卡桑德拉集群六星火工人,每个人都有1核心2GB内存。 使用Spark应用程序,我试图从卡桑德拉表中获取超过300k行的整个数据,并尝试做一些聚合。如何在Apache的星火

但是从Cassandra获取数据需要花费很多时间。我也经历了Spark UI,我看到Spark阶段有3个分区,其中两个执行得非常快(在几秒钟内),而第三个执行很长时间(7分钟)。

而且我还试图重新分配CassandraRDD以增加任务数量并将任务分配给所有六名工人,但没有找到任何解决方案。

回答

1

要调整由CassandraRDD创建的任务数量,您需要调整spark.cassandra.input.split.size。这决定了将要生成多少个实际的Spark分区。

spark.cassandra.input.split.size approx number of Cassandra partitions in a Spark partition 100000 

请注意,这将控制Spark分区中C *分区的数量,而不是C *行。这也是一个估计,所以你不能保证这个确切数量的标记将在一个火花分区中。

如果您继续看到某些分区的行为比其他分区慢,我会调查该分区的节点健康状况并检查热点。

+1

我已经设置了这个--conf spark.cassandra.input.split.size_in_mb = 32,仍然我所有的数据大约250 MB是加载在一个执行器(约400万条记录) – Nipun 2015-09-25 07:12:03

+0

请参阅此http:// stackoverflow .COM /问题/ 32775696 /重新分区-的-数据帧中,火花呢 - 不工作 – Nipun 2015-09-25 07:22:35