{"id":2094,"date":"2015-10-26T06:35:01","date_gmt":"2015-10-26T06:35:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2094"},"modified":"2023-10-06T00:04:16","modified_gmt":"2023-10-06T07:04:16","slug":"spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/","title":{"rendered":"Lan\u00e7ado o conector do Couchbase Spark 1.0.0"},"content":{"rendered":"<h1>Lan\u00e7amento do Spark Connector 1.0.0<\/h1>\n<p>Depois de duas pr\u00e9vias para desenvolvedores e uma vers\u00e3o beta, estou muito feliz em anunciar a primeira vers\u00e3o est\u00e1vel do nosso Couchbase Spark Connector. O momento n\u00e3o \u00e9 coincid\u00eancia, j\u00e1 que na pr\u00f3xima semana <a href=\"https:\/\/spark-summit.org\/eu-2015\/\">Spark Summit Europa 2015<\/a> est\u00e1 acontecendo em Amsterd\u00e3. Estamos patrocinando o evento e, como resultado, voc\u00ea poder\u00e1 encontrar a mim e a meus colegas no estande do Couchbase!<\/p>\n<p>Essa vers\u00e3o est\u00e1vel marca o fim das grandes mudan\u00e7as significativas, trazendo estabilidade para a API e um caminho claro para o futuro. Se voc\u00ea ainda n\u00e3o leu os an\u00fancios anteriores, a postagem a seguir oferece uma vis\u00e3o geral dos recursos e capacidades.<\/p>\n<p>O Conector \u00e9 distribu\u00eddo a partir do Maven Central (assim como o <a href=\"https:\/\/spark-packages.org\/package\/couchbaselabs\/couchbase-spark-connector\">spark-packages.org<\/a>), portanto, se quiser fazer experi\u00eancias com ele usando o spark-shell, isso \u00e9 tudo de que voc\u00ea precisa para come\u00e7ar a trabalhar:<\/p>\n<p>Para abrir seu apetite, aqui est\u00e1 um exemplo de c\u00f3digo completo que voc\u00ea pode executar em nosso conjunto de dados \"travel-sample\". Ele usa <a href=\"https:\/\/spark.apache.org\/sql\/\">Spark SQL<\/a> para criar um quadro de dados para todas as companhias a\u00e9reas (com base em um predicado que voc\u00ea especificar) e, em seguida, seleciona alguns campos e aplica a ordena\u00e7\u00e3o, bem como um limite:<\/p>\n<p>Isso imprime:<\/p>\n<p>Em poucas linhas de c\u00f3digo, voc\u00ea pode executar todos os tipos de consultas para an\u00e1lise de dados, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Extract,_transform,_load\">ETL<\/a> ou aprendizado de m\u00e1quina sobre o Couchbase. Para mim, isso \u00e9 fant\u00e1stico - se voc\u00ea tamb\u00e9m gosta disso, continue lendo para saber todos os detalhes.<\/p>\n<p>A prop\u00f3sito, a documenta\u00e7\u00e3o completa pode ser encontrada em <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.0\/connectors\/spark-1.0\/spark-intro.html\">aqui<\/a>.<\/p>\n<h2>Spark Core - A base escal\u00e1vel<\/h2>\n<p>A API de menor contato com o usu\u00e1rio no Spark \u00e9 a <a href=\"https:\/\/www.cs.berkeley.edu\/~matei\/papers\/2012\/nsdi_spark.pdf\">RDD (conjuntos de dados distribu\u00eddos resilientes)<\/a>. Trata-se basicamente de uma cole\u00e7\u00e3o de dados que o Spark distribui por todo o cluster. Como o Spark \u00e9 uma m\u00e1quina de processamento de big data, mas n\u00e3o um banco de dados, ele precisa de mecanismos para criar RDDs, bem como para persistir RDDs no final dos c\u00e1lculos. Para ajudar com isso, o Couchbase fornece:<\/p>\n<ul>\n<li>API para criar RDDs por meio de KeyValue, Views e N1QL<\/li>\n<li>Persistir RDDs em um bucket do Couchbase por meio de KeyValue<\/li>\n<\/ul>\n<p>A documenta\u00e7\u00e3o detalhada para essas tarefas est\u00e1 dispon\u00edvel <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.0\/connectors\/spark-1.0\/working-with-rdds.html\">aqui<\/a>. Os exemplos de c\u00f3digo a seguir mostram como criar RDDs facilmente, bem como mant\u00ea-los. Observe que esses exemplos esperam apenas que um SparkContext esteja dispon\u00edvel.<\/p>\n<p>E aqui um exemplo mais complicado que l\u00ea todas as companhias a\u00e9reas, executa uma contagem cl\u00e1ssica de palavras em seus nomes, agrega os resultados e os armazena em um documento no cluster do Couchbase:<\/p>\n<p>Como voc\u00ea pode imaginar, muitas coisas est\u00e3o acontecendo nos bastidores. A API \u00e9 transformada em consultas do Couchbase, mas o mais importante \u00e9 que o conector lida com os recursos de forma totalmente transparente. Como seus c\u00e1lculos ser\u00e3o executados em trabalhadores arbitr\u00e1rios no cluster, o conector abre conex\u00f5es onde for necess\u00e1rio de forma eficiente. Portanto, voc\u00ea s\u00f3 precisa informar ao Spark o que buscar ou persistir - o conector cuidar\u00e1 do resto.<\/p>\n<p>Se voc\u00ea executar workers do Spark lado a lado com n\u00f3s do Couchbase, o conector tentar\u00e1 indicar o worker adequado para opera\u00e7\u00f5es KeyValue (novamente, de forma transparente). Dessa forma, as opera\u00e7\u00f5es caras de embaralhamento da rede s\u00e3o reduzidas, o que leva a um desempenho ainda melhor em tais configura\u00e7\u00f5es. Observe que essa \u00e9 uma otimiza\u00e7\u00e3o pura, voc\u00ea pode executar qualquer topologia que desejar e ela simplesmente funcionar\u00e1.<\/p>\n<h2>Spark SQL - Uma hist\u00f3ria de amor com o N1QL<\/h2>\n<p>O Spark SQL \u00e9 um m\u00f3dulo para trabalhar com dados estruturados. Ele permite que o usu\u00e1rio coloque um esquema sobre um RDD, que \u00e9 ent\u00e3o chamado de <a href=\"https:\/\/spark.apache.org\/docs\/latest\/sql-programming-guide.html#dataframes\">DataFrame<\/a> (anteriormente SchemaRDD). Como o Spark agora tem informa\u00e7\u00f5es sobre a estrutura dos dados com os quais est\u00e1 trabalhando, ele pode aplicar todos os tipos de transforma\u00e7\u00f5es e otimiza\u00e7\u00f5es.<\/p>\n<p>O Couchbase Server 4.0 inclui a nov\u00edssima linguagem de consulta N1QL, que se integra perfeitamente \u00e0s APIs Spark SQL. H\u00e1 apenas um problema: os documentos armazenados no Couchbase n\u00e3o precisam aderir a um esquema espec\u00edfico - esse \u00e9 um de seus recursos. Ent\u00e3o, como podemos trazer estrutura em um mundo sem esquema?<\/p>\n<p>A resposta para isso \u00e9 a infer\u00eancia autom\u00e1tica de esquema. Se voc\u00ea criar um DataFrame em cima do Couchbase, precisar\u00e1 fornecer um \"schemaFilter\" que, por sua vez, criar\u00e1 internamente um predicado. Em seguida, carregaremos v\u00e1rios documentos com esse predicado e inferiremos o esquema a partir da\u00ed. O exemplo a seguir mostra como criar um DataFrame para companhias a\u00e9reas no intervalo \"travel-sample\", que s\u00e3o identificadas pelo atributo type no pr\u00f3prio documento:<\/p>\n<p>Isso imprime:<\/p>\n<p>Se seus documentos forem mais ou menos semelhantes, essa abordagem funcionar\u00e1 bem. Se os documentos n\u00e3o tiverem nenhum esquema, de modo que cada documento tenha uma apar\u00eancia muito diferente, voc\u00ea tamb\u00e9m poder\u00e1 fornecer o esquema manualmente. Dessa forma, voc\u00ea especifica apenas os campos potencialmente necess\u00e1rios:<\/p>\n<p>Por fim, se isso ainda n\u00e3o funcionar, voc\u00ea sempre poder\u00e1 recorrer a uma consulta RDD e gerar um DataFrame a partir dos resultados:<\/p>\n<p>Isso imprime:<\/p>\n<p>Voc\u00ea pode ver como ele detecta at\u00e9 mesmo a estrutura recursiva de objetos e matrizes JSON. Isso tamb\u00e9m pode ser utilizado no momento da consulta, proporcionando flexibilidade tanto na modelagem de dados quanto na consulta.<\/p>\n<p>Agora que o DataFrame foi criado, voc\u00ea pode realizar todos os tipos de consultas com ele:<\/p>\n<p>Isso imprime:<\/p>\n<p>Aqui est\u00e1 um exemplo diferente que mostra como voc\u00ea pode criar um DataFrame do HDFS e uni-lo \u00e0s linhas do Couchbase:<\/p>\n<p>Uma parte importante disso tamb\u00e9m \u00e9 tratada de forma oculta: os campos e predicados necess\u00e1rios s\u00e3o transferidos para o mecanismo de consulta N1QL no servidor, de modo que s\u00f3 computamos e transferimos os dados essenciais, o que permite uma rede mais eficiente e o manuseio de recursos da CPU.<\/p>\n<h2>Spark Streaming - In-N-Out em tempo real (suave)<\/h2>\n<p>O Spark Streaming traz uma abordagem de streaming de microbatch para o Spark, permitindo que voc\u00ea execute aplicativos de batch e streaming em um \u00fanico sistema. O Couchbase permite que voc\u00ea mantenha esses fluxos no Couchbase, al\u00e9m de criar (experimentalmente) esse fluxo por meio de seu protocolo interno de altera\u00e7\u00e3o de documentos (DCP).<\/p>\n<p>A persist\u00eancia de um DStream funciona da mesma forma que a persist\u00eancia de um RDD - voc\u00ea s\u00f3 precisa usar a importa\u00e7\u00e3o impl\u00edcita correta e convert\u00ea-la em uma representa\u00e7\u00e3o de documento. Os exemplos a seguir mostram como persistir o conte\u00fado dos tweets em um feed do Twitter no Couchbase:<\/p>\n<p>Voc\u00ea pode encontrar mais informa\u00e7\u00f5es sobre o suporte do Spark Streaming <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.0\/connectors\/spark-1.0\/spark-streaming.html\">aqui<\/a>.<\/p>\n<h2>O caminho a seguir<\/h2>\n<p>Foi importante conseguir lan\u00e7ar essa primeira vers\u00e3o est\u00e1vel. A pr\u00f3xima vers\u00e3o (1.1) trar\u00e1 compatibilidade oficial com o Spark 1.5, al\u00e9m de outros aprimoramentos e corre\u00e7\u00f5es de estabilidade. Como sempre, experimente o conector e d\u00ea seu feedback sobre o que voc\u00ea acha que deve ser melhorado.<\/p>\n<p>Feliz hacking, sem bugs e com opera\u00e7\u00f5es r\u00e1pidas de embaralhamento!<\/p>","protected":false},"excerpt":{"rendered":"<p>Spark Connector 1.0.0 Released After two developer previews and one beta I&#8217;m super happy to announce the first stable release of our Couchbase Spark Connector. The timing is no coincidence, since next week Spark Summit Europe 2015 is happening in [&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-2094","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>Couchbase Spark Connector 1.0.0 Released - 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\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase Spark Connector 1.0.0 Released\" \/>\n<meta property=\"og:description\" content=\"Spark Connector 1.0.0 Released After two developer previews and one beta I&#8217;m super happy to announce the first stable release of our Couchbase Spark Connector. The timing is no coincidence, since next week Spark Summit Europe 2015 is happening in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-10-26T06:35:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-10-06T07:04:16+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=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/\"},\"author\":{\"name\":\"Michael Nitschinger\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d\"},\"headline\":\"Couchbase Spark Connector 1.0.0 Released\",\"datePublished\":\"2015-10-26T06:35:00+00:00\",\"dateModified\":\"2023-10-06T07:04:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/\"},\"wordCount\":1056,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#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\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/\",\"name\":\"Couchbase Spark Connector 1.0.0 Released - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-10-26T06:35:00+00:00\",\"dateModified\":\"2023-10-06T07:04:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#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\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase Spark Connector 1.0.0 Released\"}]},{\"@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":"Couchbase Spark Connector 1.0.0 Released - 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\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/","og_locale":"pt_BR","og_type":"article","og_title":"Couchbase Spark Connector 1.0.0 Released","og_description":"Spark Connector 1.0.0 Released After two developer previews and one beta I&#8217;m super happy to announce the first stable release of our Couchbase Spark Connector. The timing is no coincidence, since next week Spark Summit Europe 2015 is happening in [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-10-26T06:35:00+00:00","article_modified_time":"2023-10-06T07:04:16+00:00","author":"Michael Nitschinger","twitter_card":"summary_large_image","twitter_creator":"@daschl","twitter_misc":{"Written by":"Michael Nitschinger","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/"},"author":{"name":"Michael Nitschinger","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d"},"headline":"Couchbase Spark Connector 1.0.0 Released","datePublished":"2015-10-26T06:35:00+00:00","dateModified":"2023-10-06T07:04:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/"},"wordCount":1056,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#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\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/","url":"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/","name":"Couchbase Spark Connector 1.0.0 Released - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-10-26T06:35:00+00:00","dateModified":"2023-10-06T07:04:16+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#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\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase Spark Connector 1.0.0 Released"}]},{"@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\/2094","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=2094"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2094\/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=2094"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2094"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2094"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}