我正在使用Cassandra 3.11.4和Spark 2.3.3。当我用 joinWithCassandraTable 查询很多分区键(持续3个月,分区键= 3 * 30 * 24 * 60个分区键)时,我在cassandra debug.log ,例如:
<SELECT * FROM event_keyspace.event_table WHERE partitionkey1, partitionkey2 = value1, value2 AND column_key = column_value1 LIMIT 5000>, time 599 msec - slow timeout 500 msec
<SELECT * FROM event_keyspace.event_table WHERE partitionkey1, partitionkey2 = value5, value6 AND column_key = column_value5 LIMIT 5000>, time 591 msec - slow timeout 500 msec/cross-node
我在 joinWithCassandraTable 之前使用 repartitionByCassandraReplica 。
我看到磁盘IO达到100%。如果我更改以小时为分区键而不是分钟为分区键的数据模型,则会创建不适用的大分区。
我怀疑此限制5000可能会导致该问题,但是即使我设置了 input.fetch.size_in_rows ,此日志也没有更改。
sparkConf.set("spark.cassandra.input.fetch.size_in_rows", "20000");
如何设置此 LIMIT 5000 条款?
答案 0 :(得分:0)
您是否尝试减小spark.cassandra.input.split.size?因为所有数据都属于同一分区。