Глобальная переменная класса, используемая в процессе потоковой передачи искры: является ли она вещательной переменной? - PullRequest
0 голосов
/ 03 июля 2019

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

На данный момент мне удалось использовать предварительно установленную переменную "инвентарь" впреобразование JavaDStream.

class Foo {

  public static Map<String,String> inventory;

  public static void main(String args) {

    inventory = Inventory.load(); // here i set the variable

    SparkSession sparkSession = ...

    JavaStreamingContext ssc = ... // here i initialize the Spark Streaming Context

    JavaInputDStream<ConsumerRecord<String, String>> records = ...

    JavaDStream<Map<String,Object>> processedRecords = records.flatMap(rawRecord->{
      return f(rawRecord,inventory); // just an example...
    }

  }

}

Я понимаю, что часть в лямбда-выражении (rawRecord) является распределенной, и затем я предполагаю, что «инвентаризация» передается каждому исполнителю, выполняющему процесс,это так?

1 Ответ

0 голосов
/ 09 июля 2019

Да, вы должны передать эту переменную, чтобы она была доступна для всех исполнителей в распределенной среде.

...