У меня есть опыт искры, но только начинается с Кассандры. Я пытаюсь сделать очень простое чтение и получить очень плохую производительность - не могу понять, почему. Вот код, я использую:cassandra искровой разъем читать производительность
sc.cassandraTable("nt_live_october","nt")
.where("group_id='254358'")
.where("epoch >=1443916800 and epoch<=1444348800")
.first
все 3 Params являются частью ключа на столе:
PRIMARY KEY (group_id, эпоха, group_name, auto_generated_uuid_field) ) С КЛАСТЕРНЫМ ЗАКАЗОМ BY (эпоха ASC, group_name ASC, auto_generated_uuid_field ASC)
И выход я вижу от моего водителя, как это:
15/10/07 15:05:02 INFO CassandraConnector: Connected Кассандре кластера: shakassandra 15/10/07 15:07 : 02 ОШИБКА сессия: Ошибка создание пула для attila./198.xxx:9042 com.datastax.driver.core.ConnectionException: [attila./198.xxx:9042] Непредвиденная ошибка во время транспортировки инициализации (ком. datastax.driver.core.OperationTimedOutException: [attila /198.xxx:9042] Время работы от времени)
15/10/07 15:07:02 INFO SparkContext: Начало работы: взять на CassandraRDD.scala: 121
15/10/07 15:07:03 INFO BlockManagerInfo: Добавлено broadcast_5_piece0 в память о osd09: 39903 (размер: 4.8 Кб, бесплатно: 265,4 МБ)
15/10/07 15:08:23 ИНФО TaskSetManager: Закончено задача 0.0 на стадии 6.0 (TID, 8) в 80153 мс на osd09 (1/1)
15/10/07 15:08:23 ИНФО TaskSetManager: Закончено задача 0.0 на стадии 6.0 (TID 8) в 80153 мс на osd09 (1/1)
15/10/07 15:08:23 INFO DAGScheduler: ResultStage 6 (взять на CassandraRDD.scala: 121) закончил в 80.958 сек 15/10/07 15:08:23 INFO TaskSchedulerImpl: Удалены набор задач 6.0, задачи которого все завершено, из бассейна
15/10/07 15:08:23 INFO DAGScheduler: Работа 5 завершена: взять на CassandraRDD.scala: 121, принял 81.043413 s
Я ожидаю, что этот запрос будет очень быстрым, но это займет минуту. Несколько вещей, которые выскакивают на меня
- Он занимает почти две минуты, чтобы получить ошибку сеанса - я передать IP-адрес из 3 узлов Спарка разъема Cassandra - есть способ, чтобы сказать ему, чтобы пропустить неудачные соединения быстрее ?
- Задача отправляется работнику Spark, который не является узлом Cassandra - это кажется мне довольно странным - есть ли способ получить информацию о том, почему планировщик решил отправить задачу удаленному узлу?
- Даже если задача была отправлена на удаленный узел, размер ввода (Макс.) Для этого рабочего отображается как 334,0 B/1, но время выполнения составляет 1,3 минуты (см. Рисунок). Это, кажется, очень медленно - я бы ожидать, время будет потрачено на десериализации, не вычислить ...
Любые советы о том, как отладить это, где искать потенциальных проблем, очень высокую оценку. Использование Spark 1.4.1 с разъемом 1.4.0-M3, cassandra ReleaseVersion: 2.1.9, все значения по умолчанию для настраиваемых параметров разъема