Cache Distribuído com Variáveis ​​de Broadcast: Apache Spark



Esta postagem do blog discute o cache distribuído com variáveis ​​de transmissão e apresenta uma introdução à distribuição eficiente de grandes valores na programação do Spark.

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 .



CSV-file-distributed-caching

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

Apache Spark combineByKey explicado