Jak rozumiem, zmienne rozgłaszania są tworzone tylko raz, ale używane wielokrotnie. Więc wydaje mi się, że powinienem utworzyć zmienną rozgłoszeniową w klasie singleton, czy to zły pomysł? Jakie są plusy i minusy używania klasy singleton do przechowywania zmiennej broadcast?Jakie są plusy i minusy używania zmiennych rozgłoszeniowych w singleton?
Odpowiedz
myślę Broadcast zmienne zasługują na kilka wyjaśnień, aby lepiej zrozumieć, jak ten mechanizm działa:
Broadcast zmienna pozwala zachować read-only zmienną buforowane na każdym komputerze zamiast transportowego kopia z zadaniami. Można go wykorzystać na przykład do wydajnego dostarczenia każdemu węzłowi kopii dużego zestawu danych wejściowych.
Można sprawdzić dalsze szczegóły na: Spark Broadcast variables
Po utworzeniu zmiennej rozgłaszania w Spark, dostaniesz opakowanie wokół v (dostępnego poprzez wywołanie broadcastVar.value()
), więc przy użyciu singleton będzie przy użyciu singleton odniesienia dla Okienko, a nie rzeczywistą wartość, a zatem wzór singletonowy może mieć znacznie mniejszy wpływ w obu kierunkach.
Można również użyć tego samego opakowania opakowania przez cały cykl życia realizacji programu Spark.
Ponieważ jest to odniesienie do zmiennej tylko do odczytu, te opcje będą miały podobne działanie.