Параметры пула Spark

У меня возникли проблемы с пониманием того, как использовать настройки для параметров объединения и как определить, работают ли они из этого источника: https://docs.datastax.com/en/developer/java-driver/3.4/manual/pooling/

Будет ли SparkSession val учитывать параметры объединения из кластера?

Мой код Scala:

package com.zeropoints.processing

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
import com.datastax.spark.connector._
import com.datastax.driver.core.Cluster
import com.datastax.driver.core.PoolingOptions
import com.datastax.driver.core.HostDistance

//This object provides the main entry point into spark processing
object main {

  var appName = "Processing" 

  lazy val sparkconf:SparkConf = new SparkConf(true).setAppName(appName)

  lazy val poolingOptions:PoolingOptions = new PoolingOptions()

  lazy val cluster:Cluster = Cluster.builder().withPoolingOptions(poolingOptions).build()

  lazy val spark:SparkSession = SparkSession.builder().config(sparkconf).getOrCreate

  lazy val sc:SparkContext = spark.sparkContext

  def main(args: Array[String]) {
    //Set pooling stuff
    poolingOptions.setConnectionsPerHost(HostDistance.LOCAL, 6, 60)

    //DF and RDDs tasks...
    spark.sql("select * from data.raw").groupBy("key1,key2").agg(sum("views")).
        write.format("org.apache.spark.sql.cassandra").options(Map( "table" -> "summary", "keyspace" -> "data")).
        mode(org.apache.spark.sql.SaveMode.Append).save()

    //..more stuff
  }

}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
753
1

Ответы 1

Нет, Spark Connector не будет учитывать вашу конфигурацию пула - он работает по-другому, особенно если вы думаете о выполнении своего кода в распределенной среде - ваш setConnectionsPerHost выполняется только в драйвере и не влияет на исполнителей.

Правильный способ - указать необходимые настройки через параметры конфигурации Spark. В документации есть отдельный раздел по параметрам подключения, и connection.connections_per_executor_max может быть тем, что вам нужно. Вы также можете написать свой собственный класс, реализующий черту CassandraConnectionFactory и обеспечивающий реализацию функции createCluster. Затем вы можете указать это имя класса как параметр конфигурации connection.factory.

Но главный вопрос - действительно ли вам нужно настраивать эти параметры? Вы думаете, что обработка идет медленно? Документ драйвера Java рекомендует использовать одно соединение на каждый хост, чтобы избежать дополнительной нагрузки на Cassandra.

Полностью согласен, маловероятно, что увеличение количества подключений на хост улучшит производительность. При тестировании я обнаружил, что вы можете получить некоторое улучшение пропускной способности, увеличив значение, но обычно это происходит только тогда, когда вы загружаете с полной остановкой, и даже тогда улучшение довольно незначительное. Я займусь обновлением документации по драйверу datastax, чтобы сделать это более понятным.

Andy Tolbert 26.07.2018 15:52

Хорошо, похоже, что ваш код Spark достигает «удаленного контроллера домена», который по умолчанию имеет ограничение в 256 запросов в полете. Вы можете попробовать установить для параметра connection.local_dc имя вашего «локального» центра обработки данных Casasndra - в некоторых случаях драйвер не может угадать, где находится ваш код.

Alex Ott 27.07.2018 08:45

Извините за задержку с ответом. Я попробую установить это и посмотрю, как пойдет. Спасибо за помощь

ZeroPoints 29.07.2018 23:42

Другие вопросы по теме