我用的是Cassandra3.11.4和spark 2.3.3。当我用joinwithcassandratable查询大量的分区键(在3个月的时间里,minute是partition key=33024*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
在加入cassandratable之前,我正在使用cassandrareplica的repartitionbycassandrareplica。
我看到磁盘io达到100%。如果我改变数据模型,将小时作为分区键,而不是分钟,那么将创建不适用的大分区。
我怀疑这个限制5000可能会导致这种情况,但即使我在\行中设置input.fetch.size\这个日志也没有改变。
sparkConf.set("spark.cassandra.input.fetch.size_in_rows", "20000");
我如何设置这个限制条款?
1条答案
按热度按时间anauzrmj1#
你试过缩小spark.cassandra.input.split.size吗?因为所有的数据都在同一个分区下。