Мне просто нужно знать, будет ли глобальная переменная открытого класса, используемая в процессе 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) является распределенной, и затем я предполагаю, что «инвентаризация» передается каждому исполнителю, выполняющему процесс,это так?