Apache Spark занимает от 5 до 6 минут для простого подсчета 1 миллиарда строк от Cassandra.

Я использую разъем Spark Cassandra. Для получения данных из таблицы Cassandra требуется 5-6 минут. В Spark я видел много задач и Executor в журнале. Причина может быть в том, что Spark разделил процесс на множество задач!

Ниже приведен пример моего кода:

public static void main(String[] args) {

    SparkConf conf = new SparkConf(true).setMaster("local[4]")
            .setAppName("App_Name")
            .set("spark.cassandra.connection.host", "127.0.0.1");

    JavaSparkContext sc = new JavaSparkContext(conf);

    JavaRDD<Demo_Bean> empRDD = javaFunctions(sc).cassandraTable("dev",
            "demo");
    System.out.println("Row Count"+empRDD.count());
}

person karmadip dodiya    schedule 23.07.2015    source источник
comment
Итак, в чем вопрос? :)   -  person zero323    schedule 23.07.2015
comment
Очевидно, я хочу уменьшить время.   -  person karmadip dodiya    schedule 23.07.2015
comment
@karmadipdodiya Привет, как вы настроили простой подсчет 1 миллиарда строк за 5–6 минут? На простой подсчет у меня ушло более 10 часов. Какую конфигурацию искры и кассандры вы делали?   -  person niaomingjian    schedule 18.12.2017


Ответы (2)


После поиска в Google мне понравилась проблема в последнем разъеме spark-cassandra. Значение параметра spark.cassandra.input.split.size_in_mb по умолчанию — 64 МБ, что в коде интерпретируется как 64 байта. Так что попробуй с spark.cassandra.input.split.size_in_mb = 64 * 1024 * 1024 = 67108864

Услышать пример:

public static void main(String[] args) {

    SparkConf conf = new SparkConf(true).setMaster("local[4]")
            .setAppName("App_Name")
            .set("spark.cassandra.connection.host", "127.0.0.1")
            .set("spark.cassandra.input.split.size_in_mb","67108864");


    JavaSparkContext sc = new JavaSparkContext(conf);

    JavaRDD<Demo_Bean> empRDD = javaFunctions(sc).cassandraTable("dev",
            "demo");
    System.out.println("Row Count"+empRDD.count());
}
person karmadip dodiya    schedule 23.07.2015
comment
Для справки, вот номер ошибки, которая исправила настройку размера разделения (МБ против Б) в соединителе версии 1.3.0: datastax-oss.atlassian.net/browse/SPARKC-208 - person BrianC; 23.07.2015

Чтобы ускорить его, вы можете попробовать установить spark.cassandra.input.split.size_in_mb при создании файла SparkConf.

Возможно, исполнители пытаются прочитать все строки в память сразу. Если они не все подходят, это может привести к выгрузке RDD на диск, что приведет к замедлению времени. Указав размер разделения, он будет считать строки по частям, а затем отбрасывать их, а не подкачивать на диск.

Вы можете увидеть пример того, как установить размер разделения здесь.

person Jim Meyer    schedule 23.07.2015