Em nome de toda a equipe, tenho o imenso orgulho de anunciar que acabamos de lançar a primeira prévia para desenvolvedores do nosso novíssimo Couchbase Faísca Conector. Ele permite que você mova dados para dentro e para fora do Couchbase diretamente usando RDDs do Spark. Acontece que o Couchbase e o Spark se encaixam perfeitamente porque compartilham muitas propriedades, como escalabilidade, desempenho e facilidade de uso.
Os seguintes recursos estão disponíveis nesta visualização para desenvolvedores (e outros serão disponibilizados em breve):
- Criação de RDDs a partir de documentos, visualizações e consultas N1QL.
- Gravação de RDDs e DStreams no Couchbase.
- Gerenciamento totalmente transparente de clusters e buckets, incluindo acesso direto, se necessário.
Você pode encontrar o projeto no github aqui. Também fornecemos documentação em formato wikimas planeja mudá-lo para algo mais oficial quando o projeto se aproximar de uma versão GA.
Obtendo
As prévias para desenvolvedores estão disponíveis em nosso próprio repositório maven, os artefatos GA estarão disponíveis no maven central. Aqui estão as coordenadas (estamos fazendo a compilação cruzada para scala 2.10 e 2.11, como faz o spark):
- ID do grupo: com.couchbase.client
- ID do artefato: spark-connector_2.10 ou spark-connector_2.11
- Versão: 1.0.0-dp
Esta visualização para desenvolvedores foi criada com o Spark 1.2.1. Se você quiser apenas brincar com uma instalação local, isso é tudo de que precisa para começar. Quando você precisar implantar na produção, o mais fácil é "fat jar" todas as dependências usando o ótimo montagem de sbt plugin. A rigor, isso não tem muito a ver com o conector do couchbase, mas em breve forneceremos guias completos sobre essa área como parte da documentação oficial.
Configuração
Quando tudo estiver no classpath, é hora de definir uma configuração e o contexto do Spark. A configuração completa é feita por meio de propriedades na configuração do Spark. Se você não fornecer nenhuma configuração, ele se conectará a um servidor em localhost e usar o padrão balde.
Aqui está uma configuração ligeiramente personalizada que abre o arquivo amostra de cerveja em um cluster remoto. Vamos usar o amostra de cerveja na maioria dos exemplos a seguir.
Também é possível abrir vários buckets e usá-los ao mesmo tempo. Consulte a seção documentos atuais para obter mais informações. Agora, tudo o que precisamos fazer é inicializar o contexto do Spark:
Leitura do Couchbase em RDDs
A primeira coisa a lembrar é importar o namespace correto para que todos os métodos específicos do Couchbase estejam disponíveis no contexto do Spark.
Agora podemos usar o couchbaseGet para ler uma sequência de IDs em um RDD e, opcionalmente, aplicar todos os tipos de transformações spark a eles. Aqui está um método simples que carrega documentos de cerveja, extrai seus nomes e os imprime:
O código usa o paralelismo padrão, mas um método sobrecarregado está disponível para personalizar essa propriedade, de modo que você possa obter o fator de paralelismo correto de que precisa.
Você precisa indicar o tipo de documento de destino para o SDK, pois há muitas maneiras de convertê-lo. Portanto, se você quiser usar o RawJsonDocument em vez de JsonDocument você pode obter acesso à string json bruta em vez da string json convertida JsonObject. De maneira semelhante, você pode até mesmo obter acesso aos dados binários que está armazenando no Couchbase como documentos.
Você também pode criar um RDD a partir de uma consulta de visualização. O exemplo a seguir imprime as 10 primeiras linhas do resultado da visualização:
Muitas vezes, você também precisa obter o documento completo para cada linha emitida. Para que isso aconteça, o couchbaseGet também está disponível como uma transformação de RDD. Aqui está um exemplo mais completo que carrega todos os documentos de uma determinada exibição e armazena em cache o RDD. Em seguida, estamos calculando a média de álcool por volume para todas as cervejas, bem como encontrando as cervejas com o nome mais longo.
Por fim, se você tiver um servidor habilitado para N1QL (ou que esteja executando pelo menos o N1QL DP4), também poderá executar uma consulta N1QL:
Gravação de RDDs no Couchbase
O Couchbase é bem conhecido por seu excelente desempenho de gravação, portanto, seria uma pena se não pudéssemos utilizar isso no Spark. A maneira mais simples é passar um RDD[Documento] no saveToCouchbase Método RDD. O código a seguir criará 100 documentos no Couchbase:
Você também pode usar conversores personalizados que reduzem o boilerplate se não for necessário controle total sobre o documento criado. Há algumas limitações neste ponto, mas as estruturas JSON planas também podem ser armazenadas dessa forma (semelhante à anterior):
Vamos aprimorar os recursos de conversão nas próximas visualizações para desenvolvedores, além de permitir que você conecte sua própria lógica.
Por fim, também fornecemos suporte para o firehose de dados no couchbase a partir de um Fluxo de dados (streaming de faísca). Aqui está um exemplo completo que busca dados do Twitter e armazena hashtags populares como documentos no Couchbase:
Planos para o Developer Preview 2
Por mais empolgante que seja essa primeira prévia para desenvolvedores, temos muitos outros recursos na fila. Por exemplo, estamos trabalhando em uma integração mais estreita entre o N1QL e o Spark SQL, criando DStreams por meio do DCP (nosso protocolo interno de streaming) para obter alterações de documentos em tempo real no Spark e também conversores personalizados.
Forneça feedback e faça perguntas por meio de nosso fóruns e publique todos os problemas que encontrar em nosso rastreador de bugs (você também pode registrar recursos e aprimoramentos desejados lá!). Estamos muito animados com a evolução deste projeto e obter feedback dos primeiros usuários é fundamental para torná-lo ainda mais incrível.
Seria necessário instalar algo em cada nó do cluster do Couchbase para que isso funcione?