Разъем Spark Cassandra — размер выборки входных данных

#apache-spark #cassandra #datastax #datastax-java-driver #spark-cassandra-connector

#apache-spark #cassandra #datastax #datastax-java-driver #Разъем spark-cassandra-connector

Вопрос:

Я использую Cassandra 3.11.4 и Spark 2.3.3. Когда я запрашиваю множество ключей раздела (в течение 3 месяцев, где ключом раздела является минута = 3 * 30 * 24 * 60 ключи раздела) с помощью joinWithCassandraTable я вижу множество журналов замедленного ожидания при отладке cassandra.регистрируйте, как:

 <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
  

Я использую repartitionByCassandraReplica перед объединением с Cassandratable.

Я вижу, что дисковый ввод-вывод выполняется на 100%. Если я изменю модель данных, в которой в качестве ключа раздела указывается час вместо минуты, будут созданы большие разделы, что неприменимо.

Я подозреваю, что это ограничение 5000 может вызвать это, но даже я установил ввод.fetch.size_in_rows этот журнал не изменился.

 sparkConf.set("spark.cassandra.input.fetch.size_in_rows", "20000");
  

Как я могу установить это предложение LIMIT 5000?

Ответ №1:

Вы пробовали уменьшить размер spark.cassandra.input.split.size? Потому что все данные попадают в один раздел.

Комментарии:

1. эта конфигурация изменяет количество созданных задач spark. моя проблема заключается в выборке из cassandra.