Contribuição de Prithviraj Bose
Variáveis de broadcast são úteis quando grandes conjuntos de dados precisam ser armazenados em cache nos executores. Este blog explica como começar.
O que são variáveis de transmissão?
Variáveis de transmissão no Apache Spark é um mecanismo para compartilhar variáveis entre executores que devem ser somente leitura. Sem as variáveis de transmissão, essas variáveis seriam enviadas a cada executor para cada transformação e ação, e isso pode causar sobrecarga na rede. No entanto, com variáveis de transmissão, elas são enviadas uma vez para todos os executores e são armazenadas em cache para referência futura.
Caso de uso de variáveis de difusão
Imagine que, ao fazer uma transformação, precisamos pesquisar uma grande tabela de CEPs / códigos PIN. Aqui, não é possível enviar a grande tabela de pesquisa todas as vezes para os executores, nem podemos consultar o banco de dados todas as vezes. A solução deve ser converter essa tabela de pesquisa em variáveis de transmissão e o Spark irá armazená-la em cache em cada executor para referência futura.
Vamos dar um exemplo simples para entender os conceitos acima. Temos um arquivo CSV com nomes de países e suas capitais. O arquivo CSV pode ser encontrado Aqui .
Assumindo que estamos processando dados demográficos de países e precisamos obter a capital desse país. Nesse caso, podemos converter os dados do arquivo CSV em uma variável de transmissão.
Primeiro carregamos o arquivo CSV em um mapa, se o arquivo for encontrado, o método retorna Alguns países) senão ele retorna Nenhum .
Após o carregamento bem-sucedido do arquivo CSV, convertemos o mapa em uma variável de broadcast e o usamos em nosso programa.
No snippet de código acima, carregamos o arquivo CSV em um mapa países então, convertemos esse mapa em uma variável de transmissão countriesCache . Posteriormente, criamos um RDD a partir das chaves de países . No searchCountryDetails método pesquisamos todos os países começando com uma letra definida pelo usuário e o método retorna um RDD de países junto com suas capitais. A variável de transmissão countryCache é usado para pesquisar as capitais.
Dessa forma, não precisamos enviar todos os dados CSV sempre que precisarmos pesquisar.
O código para o searchCountryDetails é mostrado abaixo,
Todo o código-fonte pode ser encontrado Aqui .
Tem alguma questão para nós? Mencione-os na seção de comentários e entraremos em contato com você.
Postagens relacionadas:
Acumuladores de faísca explicados
convertendo double para int em java