问题描述
我正在使用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 (将#修改为@)