Ultimamente, tenho passado muito tempo trabalhando com ferramentas de Big Data, em especial com o Apache Spark. Caso você não esteja familiarizado, o Apache
O Spark é uma ferramenta incrivelmente eficiente para processar grandes quantidades de dados. Seu desempenho é significativamente melhor do que o do MapReduce, e em
Na realidade, ele não é muito difícil de usar.

O Apache Spark funciona muito bem em combinação com o Couchbase por meio do Couchbase Spark Connector. Veremos o que é necessário para
carregar alguns dados brutos de valores separados por vírgula (CSV) no Couchbase usando o Apache Spark.

Os requisitos

Não há muitos requisitos para colocar esse projeto em funcionamento. No mínimo, você precisará do seguinte:

A maior parte do desenvolvimento ocorrerá com o JDK 1.8 e o Maven, mas quando chegar a hora de executar o aplicativo, o Apache Spark
seja necessário, seja por meio de uma instância local ou remota.

Entendendo o conjunto de dados e o modelo de dados

Uma ótima maneira de se familiarizar com o Apache Spark é obter um conjunto de dados de amostra no site de ciência de dados,
Kaggle. Para este exemplo, vamos dar uma olhada no conjunto de dados de amostra chamado
Salários de SF que contém informações sobre a quantidade de dinheiro que o governo
os funcionários de São Francisco estão ganhando.

Do ponto de vista dos dados, há um único arquivo de valor separado por vírgula (CSV) chamado salários.csv com o seguinte
colunas nele:

  1. Id
  2. Nome do funcionário
  3. Cargo
  4. BasePay
  5. Pagamento de horas extras
  6. Outros pagamentos
  7. Benefícios
  8. TotalPay
  9. TotalPayBenefits
  10. Ano
  11. Notas
  12. Agência
  13. Status

Trabalhar com os dados no formato CSV é quase impossível. Ainda mais quando se trata de grandes quantidades de dados. Em vez disso, esses dados serão
armazenados como dados NoSQL para que possam ser processados posteriormente. Não entraremos em detalhes sobre o processamento de números e consultas aqui, mas isso virá em um
artigo futuro. No momento, queremos apenas colocá-lo no formato NoSQL.

Quando carregado no Couchbase, cada linha do CSV terá uma aparência semelhante à seguinte:

Sim, o bloco de dados acima é um documento JSON, que é o que o Couchbase suporta. Agora que conhecemos os objetivos dos dados, podemos começar
carregar os dados CSV no Couchbase com o Apache Spark.

Transformando os dados brutos e gravando no Couchbase

Para usar o Apache Spark em um aplicativo Java, algumas dependências devem ser incluídas. Precisamos incluir o Spark Core, o Spark SQL, o Spark CSV e o
Conector do Couchbase Spark. Como estamos usando o Maven, tudo pode ser incluído por meio do Maven pom.xml arquivo. Para incluir
Spark Core, inclua a seguinte dependência em seu arquivo Maven:

Como os dados brutos estarão na forma de CSV, podemos usar o pacote de conveniência do Spark chamado Spark CSV. A dependência do Maven
para o Spark CSV pode ser adicionado desta forma:

Os dados CSV serão carregados em um Apache Spark DataFrame. Se você não estiver familiarizado com DataFrames, eles podem ser consultados usando o Spark
SQL. Isso faz parte de como colocaremos os dados no Couchbase. Para incluir o Spark SQL em seu projeto, adicione a dependência Maven
assim:

Por fim, o Apache Spark precisa ser conectado ao Couchbase Server. Isso pode ser feito por meio do Couchbase Connector for Spark. Para
adicione essa dependência em seu projeto Maven, adicione o seguinte ao seu pom.xml file:

Todas as dependências do projeto estão prontas para funcionar!

Para começar a carregar dados CSV por meio de código Java, o Apache Spark deve primeiro ser configurado em nosso projeto. Isso inclui definir o que o Spark
a ser usada e em qual bucket do Couchbase os dados serão armazenados.

O nome do aplicativo será Salários de SF e o cluster mestre do Spark será a máquina local
já que o Spark será executado localmente neste exemplo. O bucket do Couchbase a ser usado é, mais uma vez, o bucket padrão.

Para criar um Spark DataFrame, um SQLContexto deve ser criado a partir do JavaSparkContext.

Usando o SQLContexto os dados CSV podem ser lidos dessa forma:

O processo de leitura usará o pacote Spark CSV e preservará as informações de cabeçalho que existem na parte superior do arquivo CSV.
Quando lidos em um DataFrame, os dados CSV agora são algo que o Couchbase pode entender.

Deve ser feito um ajuste nos dados de id. O Spark o reconhecerá como um número inteiro ou numérico porque esse conjunto de dados tem apenas
valores numéricos como a coluna. O Couchbase espera uma string id.

O DataFrame agora pode ser preparado para ser salvo no Couchbase.

Com os dados do DataFrame canalizados para o Funções do DataFrameWriter o valor de id pode ser mapeado para um objeto
id do documento. Os dados nesse ponto podem ser salvos.

Grandes quantidades de documentos do Couchbase serão salvas no bucket.

Executando o projeto com o Apache Spark

Empacote o projeto em um JAR executável usando o Maven. O projeto pode ser executado após ser empacotado, fazendo o seguinte
assim:

Dependendo do tamanho do conjunto de dados e da velocidade de seu computador ou servidor, o processo de carregamento pode demorar um pouco.

Conclusão

Você acabou de experimentar o carregamento de dados CSV sujos no Couchbase usando o Apache Spark e o Couchbase Spark Connector. O Spark foi
projetado para poder processar rapidamente grandes quantidades de dados em tempo real. Combine-o com o Couchbase e seu sistema centrado na memória
e você tem um ótimo pacote de software.

Autor

Postado por Nic Raboy, defensor dos desenvolvedores, Couchbase

Nic Raboy é um defensor das modernas tecnologias de desenvolvimento móvel e da Web. Ele tem experiência em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experiências de desenvolvimento relacionadas a tornar o desenvolvimento móvel e da Web mais fácil de entender.

Deixar uma resposta