{"id":1898,"date":"2015-09-01T17:54:29","date_gmt":"2015-09-01T17:54:29","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1898"},"modified":"2023-05-18T05:22:56","modified_gmt":"2023-05-18T12:22:56","slug":"introducing-the-couchbase-spark-connector","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/introducing-the-couchbase-spark-connector\/","title":{"rendered":"Apresentando o conector do Couchbase Spark"},"content":{"rendered":"<p>Em nome de toda a equipe, tenho o imenso orgulho de anunciar que acabamos de lan\u00e7ar a primeira pr\u00e9via para desenvolvedores do nosso nov\u00edssimo Couchbase <a href=\"https:\/\/spark.apache.org\/\">Fa\u00edsca<\/a> Conector. Ele permite que voc\u00ea 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.<\/p>\n<p>Os seguintes recursos est\u00e3o dispon\u00edveis nesta visualiza\u00e7\u00e3o para desenvolvedores (e outros ser\u00e3o disponibilizados em breve):<\/p>\n<ul>\n<li>Cria\u00e7\u00e3o de RDDs a partir de documentos, visualiza\u00e7\u00f5es e consultas N1QL.<\/li>\n<li>Grava\u00e7\u00e3o de RDDs e DStreams no Couchbase.<\/li>\n<li><a href=\"https:\/\/github.com\/couchbaselabs\/couchbase-spark-connector\/wiki\/Connection-Management#introduction\">Gerenciamento totalmente transparente de clusters e buckets, incluindo acesso direto, se necess\u00e1rio.<\/a><\/li>\n<\/ul>\n<p>Voc\u00ea pode encontrar o projeto no github <a href=\"https:\/\/github.com\/couchbaselabs\/couchbase-spark-connector\">aqui<\/a>. Tamb\u00e9m fornecemos <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.0\/connectors\/spark-1.0\/spark-intro.html\">documenta\u00e7\u00e3o em formato wiki<\/a>mas planeja mud\u00e1-lo para algo mais oficial quando o projeto se aproximar de uma vers\u00e3o GA.<\/p>\n<h2>Obtendo<\/h2>\n<p>As pr\u00e9vias para desenvolvedores est\u00e3o dispon\u00edveis em nosso pr\u00f3prio reposit\u00f3rio maven, os artefatos GA estar\u00e3o dispon\u00edveis no maven central. Aqui est\u00e3o as coordenadas (estamos fazendo a compila\u00e7\u00e3o cruzada para scala 2.10 e 2.11, como faz o spark):<\/p>\n<ul>\n<li><strong>ID do grupo:<\/strong> com.couchbase.client<\/li>\n<li><strong>ID do artefato:<\/strong> spark-connector_2.10 ou spark-connector_2.11<\/li>\n<li><strong>Vers\u00e3o:<\/strong> 1.0.0-dp<\/li>\n<\/ul>\n<p>Esta visualiza\u00e7\u00e3o para desenvolvedores foi criada com o Spark 1.2.1. Se voc\u00ea quiser apenas brincar com uma instala\u00e7\u00e3o local, isso \u00e9 tudo de que precisa para come\u00e7ar. Quando voc\u00ea precisar implantar na produ\u00e7\u00e3o, o mais f\u00e1cil \u00e9 \"fat jar\" todas as depend\u00eancias usando o \u00f3timo <a href=\"https:\/\/github.com\/sbt\/sbt-assembly\">montagem de sbt<\/a> plugin. A rigor, isso n\u00e3o tem muito a ver com o conector do couchbase, mas em breve forneceremos guias completos sobre essa \u00e1rea como parte da documenta\u00e7\u00e3o oficial.<\/p>\n<h2>Configura\u00e7\u00e3o<\/h2>\n<p>Quando tudo estiver no classpath, \u00e9 hora de definir uma configura\u00e7\u00e3o e o contexto do Spark. A configura\u00e7\u00e3o completa \u00e9 feita por meio de propriedades na configura\u00e7\u00e3o do Spark. Se voc\u00ea n\u00e3o fornecer nenhuma configura\u00e7\u00e3o, ele se conectar\u00e1 a um servidor em <em>localhost<\/em> e usar o <em>padr\u00e3o<\/em> balde.<\/p>\n<p>Aqui est\u00e1 uma configura\u00e7\u00e3o ligeiramente personalizada que abre o arquivo <em>amostra de cerveja<\/em> em um cluster remoto. Vamos usar o <em>amostra de cerveja<\/em> na maioria dos exemplos a seguir.<\/p>\n<p>Tamb\u00e9m \u00e9 poss\u00edvel abrir v\u00e1rios buckets e us\u00e1-los ao mesmo tempo. Consulte a se\u00e7\u00e3o <a href=\"https:\/\/github.com\/couchbaselabs\/couchbase-spark-connector\/wiki\">documentos atuais<\/a> para obter mais informa\u00e7\u00f5es. Agora, tudo o que precisamos fazer \u00e9 inicializar o contexto do Spark:<\/p>\n<h2>Leitura do Couchbase em RDDs<\/h2>\n<p>A primeira coisa a lembrar \u00e9 importar o namespace correto para que todos os m\u00e9todos espec\u00edficos do Couchbase estejam dispon\u00edveis no contexto do Spark.<\/p>\n<p>Agora podemos usar o <em>couchbaseGet<\/em> para ler uma sequ\u00eancia de IDs em um RDD e, opcionalmente, aplicar todos os tipos de transforma\u00e7\u00f5es spark a eles. Aqui est\u00e1 um m\u00e9todo simples que carrega documentos de cerveja, extrai seus nomes e os imprime:<\/p>\n<p>O c\u00f3digo usa o paralelismo padr\u00e3o, mas um m\u00e9todo sobrecarregado est\u00e1 dispon\u00edvel para personalizar essa propriedade, de modo que voc\u00ea possa obter o fator de paralelismo correto de que precisa.<\/p>\n<p>Voc\u00ea precisa indicar o tipo de documento de destino para o SDK, pois h\u00e1 muitas maneiras de convert\u00ea-lo. Portanto, se voc\u00ea quiser usar o <em>RawJsonDocument<\/em> em vez de <em>JsonDocument<\/em> voc\u00ea pode obter acesso \u00e0 string json bruta em vez da string json convertida <em>JsonObject<\/em>. De maneira semelhante, voc\u00ea pode at\u00e9 mesmo obter acesso aos dados bin\u00e1rios que est\u00e1 armazenando no Couchbase como documentos.<\/p>\n<p>Voc\u00ea tamb\u00e9m pode criar um RDD a partir de uma consulta de visualiza\u00e7\u00e3o. O exemplo a seguir imprime as 10 primeiras linhas do resultado da visualiza\u00e7\u00e3o:<\/p>\n<p>Muitas vezes, voc\u00ea tamb\u00e9m precisa obter o documento completo para cada linha emitida. Para que isso aconte\u00e7a, o couchbaseGet tamb\u00e9m est\u00e1 dispon\u00edvel como uma transforma\u00e7\u00e3o de RDD. Aqui est\u00e1 um exemplo mais completo que carrega todos os documentos de uma determinada exibi\u00e7\u00e3o e armazena em cache o RDD. Em seguida, estamos calculando a m\u00e9dia de \u00e1lcool por volume para todas as cervejas, bem como encontrando as cervejas com o nome mais longo.<\/p>\n<p>Por fim, se voc\u00ea tiver um servidor habilitado para N1QL (ou que esteja executando pelo menos o N1QL DP4), tamb\u00e9m poder\u00e1 executar uma consulta N1QL:<\/p>\n<h2>Grava\u00e7\u00e3o de RDDs no Couchbase<\/h2>\n<p>O Couchbase \u00e9 bem conhecido por seu excelente desempenho de grava\u00e7\u00e3o, portanto, seria uma pena se n\u00e3o pud\u00e9ssemos utilizar isso no Spark. A maneira mais simples \u00e9 passar um <em>RDD[Documento]<\/em> no <em>saveToCouchbase<\/em> M\u00e9todo RDD. O c\u00f3digo a seguir criar\u00e1 100 documentos no Couchbase:<\/p>\n<p>Voc\u00ea tamb\u00e9m pode usar conversores personalizados que reduzem o boilerplate se n\u00e3o for necess\u00e1rio controle total sobre o documento criado. H\u00e1 algumas limita\u00e7\u00f5es neste ponto, mas as estruturas JSON planas tamb\u00e9m podem ser armazenadas dessa forma (semelhante \u00e0 anterior):<\/p>\n<p>Vamos aprimorar os recursos de convers\u00e3o nas pr\u00f3ximas visualiza\u00e7\u00f5es para desenvolvedores, al\u00e9m de permitir que voc\u00ea conecte sua pr\u00f3pria l\u00f3gica.<\/p>\n<p>Por fim, tamb\u00e9m fornecemos suporte para o firehose de dados no couchbase a partir de um <em>Fluxo de dados<\/em> (<a href=\"https:\/\/spark.apache.org\/streaming\/\">streaming de fa\u00edsca<\/a>). Aqui est\u00e1 um exemplo completo que busca dados do Twitter e armazena hashtags populares como documentos no Couchbase:<\/p>\n<h2>Planos para o Developer Preview 2<\/h2>\n<p>Por mais empolgante que seja essa primeira pr\u00e9via para desenvolvedores, temos muitos outros recursos na fila. Por exemplo, estamos trabalhando em uma integra\u00e7\u00e3o mais estreita entre o N1QL e o Spark SQL, criando DStreams por meio do DCP (nosso protocolo interno de streaming) para obter altera\u00e7\u00f5es de documentos em tempo real no Spark e tamb\u00e9m conversores personalizados.<\/p>\n<p>Forne\u00e7a feedback e fa\u00e7a perguntas por meio de nosso <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/\">f\u00f3runs<\/a> e publique todos os problemas que encontrar em nosso <a href=\"https:\/\/issues.couchbase.com\/browse\/SPARKC\">rastreador de bugs<\/a> (voc\u00ea tamb\u00e9m pode registrar recursos e aprimoramentos desejados l\u00e1!). Estamos muito animados com a evolu\u00e7\u00e3o deste projeto e obter feedback dos primeiros usu\u00e1rios \u00e9 fundamental para torn\u00e1-lo ainda mais incr\u00edvel.<\/p>","protected":false},"excerpt":{"rendered":"<p>On behalf of the whole team, I&#8217;m incredibly proud to announce that we&#8217;ve just released the first developer preview of our brand new Couchbase Spark Connector. It allows you to move data in and out of Couchbase directly using Spark [&hellip;]<\/p>","protected":false},"author":19,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8987],"class_list":["post-1898","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introducing the Couchbase Spark Connector - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/introducing-the-couchbase-spark-connector\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducing the Couchbase Spark Connector\" \/>\n<meta property=\"og:description\" content=\"On behalf of the whole team, I&#8217;m incredibly proud to announce that we&#8217;ve just released the first developer preview of our brand new Couchbase Spark Connector. It allows you to move data in and out of Couchbase directly using Spark [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/introducing-the-couchbase-spark-connector\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-09-01T17:54:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-18T12:22:56+00:00\" \/>\n<meta name=\"author\" content=\"Michael Nitschinger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@daschl\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Nitschinger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/\"},\"author\":{\"name\":\"Michael Nitschinger\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d\"},\"headline\":\"Introducing the Couchbase Spark Connector\",\"datePublished\":\"2015-09-01T17:54:29+00:00\",\"dateModified\":\"2023-05-18T12:22:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/\"},\"wordCount\":912,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/\",\"name\":\"Introducing the Couchbase Spark Connector - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-09-01T17:54:29+00:00\",\"dateModified\":\"2023-05-18T12:22:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducing the Couchbase Spark Connector\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d\",\"name\":\"Michael Nitschinger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/95e178617974d46e3b02dd1754a3f60b\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g\",\"caption\":\"Michael Nitschinger\"},\"description\":\"Michael Nitschinger works as a Principal Software Engineer at Couchbase. He is the architect and maintainer of the Couchbase Java SDK, one of the first completely reactive database drivers on the JVM. He also authored and maintains the Couchbase Spark Connector. Michael is active in the open source community, a contributor to various other projects like RxJava and Netty.\",\"sameAs\":[\"https:\/\/nitschinger.at\",\"https:\/\/x.com\/daschl\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/michael-nitschinger\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Introducing the Couchbase Spark Connector - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/introducing-the-couchbase-spark-connector\/","og_locale":"pt_BR","og_type":"article","og_title":"Introducing the Couchbase Spark Connector","og_description":"On behalf of the whole team, I&#8217;m incredibly proud to announce that we&#8217;ve just released the first developer preview of our brand new Couchbase Spark Connector. It allows you to move data in and out of Couchbase directly using Spark [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/introducing-the-couchbase-spark-connector\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-09-01T17:54:29+00:00","article_modified_time":"2023-05-18T12:22:56+00:00","author":"Michael Nitschinger","twitter_card":"summary_large_image","twitter_creator":"@daschl","twitter_misc":{"Written by":"Michael Nitschinger","Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/"},"author":{"name":"Michael Nitschinger","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d"},"headline":"Introducing the Couchbase Spark Connector","datePublished":"2015-09-01T17:54:29+00:00","dateModified":"2023-05-18T12:22:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/"},"wordCount":912,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/","url":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/","name":"Introducing the Couchbase Spark Connector - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-09-01T17:54:29+00:00","dateModified":"2023-05-18T12:22:56+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/introducing-the-couchbase-spark-connector\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introducing the Couchbase Spark Connector"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d","name":"Michael Nitschinger","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/95e178617974d46e3b02dd1754a3f60b","url":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","caption":"Michael Nitschinger"},"description":"Michael Nitschinger trabalha como engenheiro de software principal na Couchbase. Ele \u00e9 o arquiteto e mantenedor do Couchbase Java SDK, um dos primeiros drivers de banco de dados totalmente reativos na JVM. Ele tamb\u00e9m \u00e9 o autor e mantenedor do Couchbase Spark Connector. Michael participa ativamente da comunidade de c\u00f3digo aberto e contribui para v\u00e1rios outros projetos, como RxJava e Netty.","sameAs":["https:\/\/nitschinger.at","https:\/\/x.com\/daschl"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/michael-nitschinger\/"}]}},"authors":[{"term_id":8987,"user_id":19,"is_guest":0,"slug":"michael-nitschinger","display_name":"Michael Nitschinger","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","first_name":"Michael","last_name":"Nitschinger, Principal Software Engineer, Couchbase","user_url":"https:\/\/nitschinger.at","author_category":"","description":"Michael Nitschinger trabalha como engenheiro de software principal na Couchbase. Ele \u00e9 o arquiteto e mantenedor do Couchbase Java SDK, um dos primeiros drivers de banco de dados totalmente reativos na JVM. Ele tamb\u00e9m \u00e9 o autor e mantenedor do Couchbase Spark Connector. Michael participa ativamente da comunidade de c\u00f3digo aberto e contribui para v\u00e1rios outros projetos, como RxJava e Netty."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1898","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1898"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1898\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=1898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1898"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}