Я использую spark- sql -2.4.1v с java8. Мне нужно передать некоторую информацию о конфигурации / метаданных в моем приложении spark.
Существует несколько таблиц мета-информации, у меня мало сомнений
каждая таблица мета-информации должна регистрироваться / добавляться как новая широковещательная переменная.
Понятно, что мне нужно использовать одноэлементный класс для этих метаданных, необходимо ли это в контекст применения искры? в спарк на каждого исполнителя у меня была бы разная копия синглтона, верно? Более того, все должно быть неизменным в искре. тогда я должен использовать синглтон? если мне нужно в этом контексте, имеет ли смысл? в каком контексте мне нужно использовать синглтон в приложении spark?
Скажем, у меня есть метаинформация, например, широковещательная переменная типа
Configuration conf = Configuration.getInstance(); //singleton class
> Broadcast<Map<String, Object>> broadcastVariable =
> javaSparkContext.broadcast(
> CacheLoader.loadCache(
> CacheLoader.loadDataFrameReader(sparkSession, conf.getDataConfig())));
>
Здесь, в Map broadcastVariable, каждое значение, т. Е. Object, является другим классом (Map), т.е. другой картой, внутри которой (т. Е. Object является другим (Map)). У меня есть несколько других Map, внутри которых (т. Е. Object является другим объектом класса). т.е. объект CompanyInformation).
i.e. first level Map is countryName -> HashMap<String, Object>
second level Map is stateNames -> HashMap<String, Object>
third level Map is companyName -> Company object.
этот вид дизайна работает?