spark cassandra连接器读取性能和分区

问题描述

我正在使用PySpark数据框加载cassandra表,如下所示:

df = spark.read.table(CASSANDRA_TABLE_NAME).filter(xxx).select(c1,c2,...,cn)

但是发现当某些列具有较大的二进制数据时,它的运行速度非常慢,从C *读取5GB数据大约需要100s,因此吞吐量约为50MB / s,远低于SSD I / O速度(500MB / s)。我的C *是在SSD上创建的,具有3个节点,每个节点具有20GB内存和2个cpu,其他所有设置基本上都是认设置。我有5位Spark的执行者。

通过调试,我看到从C *读取后的分区号是1,由于C *中的分区号是9,因此看起来不合理,并且我为“ spark.sql”设置的值很小(1MB)。 files.maxPartitionBytes”。

df.rdd.getNumPartitions()   # this value is 1

所以我想知道该吞吐量数字是否正常,以及如何设置Spark的分区以进行读取?非常感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)