Spark和Cassandra在单独的Docker容器上时Spark报告的低性能



我在Kubernetes上使用Spark 3.0.1、Spark cassandra连接器和cassandra。

我使用spark-cassandra连接器重分区ByCassandraReplica API来获得带有cassandra的spark分区的数据本地化功能,然后加入WithCassandraTable。但由于cassandra数据不是Spark容器的本地数据,因此此重新分区失败。正因为如此,joinWithCassandraTable的性能变得非常低。

是否有其他方法可以获得joinWithCassandraTable的良好性能。

如您所知,当Spark和Cassandra不在同一台机器上时,调用repartitionByCassandraReplica是毫无意义的。

要最大限度地提高Cassandra集群的吞吐量,请执行以下操作:

  • 为每个C*吊舱分配至少4个核心(建议8个核心(
  • 为每个C*吊舱分配至少16GB的RAM(建议24-30GB(
  • 为堆分配至少8GB的内存(建议16GB(
  • 分配IOPS至少为5K的卷

一旦配置了这些建议,就可以通过添加更多的C*pod来增加集群的容量。干杯

最新更新