{"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\/es\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/","title":{"rendered":"Lanzamiento de Couchbase Spark Connector 1.0.0"},"content":{"rendered":"<h1>Lanzamiento de Spark Connector 1.0.0<\/h1>\n<p>Despu\u00e9s de dos versiones preliminares para desarrolladores y una beta, estoy muy contento de anunciar la primera versi\u00f3n estable de nuestro Couchbase Spark Connector. El momento no es una coincidencia, ya que la pr\u00f3xima semana <a href=\"https:\/\/spark-summit.org\/eu-2015\/\">Cumbre Spark Europa 2015<\/a> se celebra en \u00c1msterdam. Estamos patrocinando el evento, por lo que nos encontrar\u00e1 a m\u00ed y a mis colegas en el stand de Couchbase.<\/p>\n<p>Esta versi\u00f3n estable marca el final de los grandes cambios de \u00faltima hora, aportando estabilidad a la API y un camino claro hacia el futuro. Si no has le\u00eddo los anuncios anteriores, en la siguiente entrada encontrar\u00e1s un resumen de las funciones y capacidades.<\/p>\n<p>El conector se distribuye desde Maven Central (as\u00ed como desde <a href=\"https:\/\/spark-packages.org\/package\/couchbaselabs\/couchbase-spark-connector\">spark-packages.org<\/a>), as\u00ed que si quieres experimentar con \u00e9l usando el spark-shell, esto es todo lo que necesitas para ponerte en marcha:<\/p>\n<p>Para abrir el apetito, aqu\u00ed tiene un ejemplo de c\u00f3digo completo que puede ejecutar con nuestro conjunto de datos \"travel-sample\". Utiliza <a href=\"https:\/\/spark.apache.org\/sql\/\">Spark SQL<\/a> para crear un marco de datos para todas las aerol\u00edneas (en funci\u00f3n de un predicado que especifique) y, a continuaci\u00f3n, selecciona algunos campos y aplica un orden y un l\u00edmite:<\/p>\n<p>Esto imprime:<\/p>\n<p>En unas pocas l\u00edneas de c\u00f3digo puede ejecutar todo tipo de consultas para el an\u00e1lisis de datos, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Extract,_transform,_load\">ETL<\/a> o aprendizaje autom\u00e1tico sobre Couchbase. Para m\u00ed eso es bastante impresionante - si a ti tambi\u00e9n te gusta sigue leyendo para conocer todos los detalles.<\/p>\n<p>Por cierto, la documentaci\u00f3n completa se encuentra en <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.0\/connectors\/spark-1.0\/spark-intro.html\">aqu\u00ed<\/a>.<\/p>\n<h2>Spark Core - La base escalable<\/h2>\n<p>La API de usuario m\u00e1s baja en Spark son las <a href=\"https:\/\/www.cs.berkeley.edu\/~matei\/papers\/2012\/nsdi_spark.pdf\">RDD (conjuntos de datos distribuidos resistentes)<\/a>. Es b\u00e1sicamente una colecci\u00f3n de datos, que Spark distribuye por todo el cluster. Dado que Spark es una m\u00e1quina de procesamiento de big data, pero no una base de datos, necesita mecanismos para crear RDDs, as\u00ed como para persistir RDDs al final de los c\u00e1lculos. Para ayudar con esto, Couchbase proporciona:<\/p>\n<ul>\n<li>API para crear RDDs mediante KeyValue, Views y N1QL<\/li>\n<li>Persistir RDDs en un Bucket Couchbase a trav\u00e9s de KeyValue<\/li>\n<\/ul>\n<p>La documentaci\u00f3n detallada de estas tareas est\u00e1 disponible en <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.0\/connectors\/spark-1.0\/working-with-rdds.html\">aqu\u00ed<\/a>. Los siguientes ejemplos de c\u00f3digo muestran c\u00f3mo crear RDDs f\u00e1cilmente, as\u00ed como persistir en ellos. Ten en cuenta que estos ejemplos solo esperan que haya un SparkContext disponible.<\/p>\n<p>Y aqu\u00ed un ejemplo m\u00e1s complicado que lee todas las aerol\u00edneas, realiza un recuento cl\u00e1sico de palabras en sus nombres, agrega los resultados y los almacena en un documento de vuelta en el cl\u00faster Couchbase:<\/p>\n<p>Como puedes imaginar, entre bastidores ocurren muchas cosas. La API se convierte en consultas a Couchbase, pero lo m\u00e1s importante es que el conector maneja los recursos de forma completamente transparente. Dado que tus c\u00e1lculos se ejecutar\u00e1n en trabajadores arbitrarios del cl\u00faster, el conector abre conexiones donde sea necesario de forma eficiente. As\u00ed que s\u00f3lo tienes que decirle a Spark qu\u00e9 recuperar o persistir - el conector se encargar\u00e1 del resto.<\/p>\n<p>Si ejecutas trabajadores Spark al lado de nodos Couchbase, el conector intenta indicar el trabajador adecuado para las operaciones KeyValue (de nuevo, de forma transparente). De esta forma se reducen las costosas operaciones de barajado de la red, lo que mejora a\u00fan m\u00e1s el rendimiento en este tipo de configuraciones. Ten en cuenta que esto es una optimizaci\u00f3n pura, puedes ejecutar cualquier topolog\u00eda que quieras y simplemente funcionar\u00e1.<\/p>\n<h2>Spark SQL - Una historia de amor N1QL<\/h2>\n<p>Spark SQL es un m\u00f3dulo para trabajar con datos estructurados. Permite al usuario poner un esquema sobre un RDD, que pasa a llamarse <a href=\"https:\/\/spark.apache.org\/docs\/latest\/sql-programming-guide.html#dataframes\">DataFrame<\/a> (anteriormente SchemaRDD). Como Spark dispone ahora de informaci\u00f3n sobre la estructura de los datos con los que trabaja, puede aplicar todo tipo de transformaciones y optimizaciones.<\/p>\n<p>Couchbase Server 4.0 incluye el nuevo lenguaje de consulta N1QL, que se integra perfectamente en las API SQL de Spark. S\u00f3lo hay una pega: los documentos almacenados en Couchbase no est\u00e1n obligados a adherirse a un esquema espec\u00edfico - esa es una de sus caracter\u00edsticas. \u00bfC\u00f3mo podemos estructurar un mundo sin esquemas?<\/p>\n<p>La respuesta es la inferencia autom\u00e1tica del esquema. Si creas un DataFrame sobre Couchbase, necesitas proporcionar un \"schemaFilter\" que a su vez crear\u00e1 internamente un predicado. Entonces cargaremos muchos documentos con ese predicado e inferiremos el esquema a partir de ah\u00ed. El siguiente ejemplo muestra c\u00f3mo crear un DataFrame para aerol\u00edneas en el bucket \"travel-sample\", que se identifican por su atributo type en el propio documento:<\/p>\n<p>Esto imprime:<\/p>\n<p>Si sus documentos son m\u00e1s o menos similares, este enfoque funciona bien. Si sus documentos carecen por completo de esquema, de modo que cada documento tiene un aspecto muy diferente, tambi\u00e9n puede proporcionar el esquema manualmente. De este modo, s\u00f3lo especificar\u00e1 los campos que pueda necesitar:<\/p>\n<p>Por \u00faltimo, si esto sigue sin funcionar, siempre puedes recurrir a una consulta RDD y generar un DataFrame a partir de los resultados:<\/p>\n<p>Esto imprime:<\/p>\n<p>Puedes ver c\u00f3mo detecta incluso la estructura recursiva de los objetos JSON y las matrices. Esto tambi\u00e9n se puede utilizar en el momento de la consulta, lo que aporta flexibilidad tanto en el modelado de datos como en la consulta.<\/p>\n<p>Ahora que ya tienes tu DataFrame creado, puedes realizar todo tipo de consultas sobre \u00e9l:<\/p>\n<p>Esto imprime:<\/p>\n<p>Aqu\u00ed tienes un ejemplo diferente que muestra c\u00f3mo puedes crear un DataFrame desde HDFS y unirlo con filas de Couchbase:<\/p>\n<p>Una parte importante de este proceso tambi\u00e9n se gestiona de forma encubierta: los campos y predicados necesarios se transfieren al motor de consulta N1QL del servidor, de modo que s\u00f3lo se computan y transfieren los datos esenciales, lo que permite una gesti\u00f3n m\u00e1s eficiente de la red y de los recursos de la CPU.<\/p>\n<h2>Spark Streaming - In-N-Out en tiempo real (suave)<\/h2>\n<p>Spark Streaming aporta un enfoque de streaming microbatch a Spark, permiti\u00e9ndote realizar aplicaciones tanto batching como streaming en un solo sistema. Couchbase te permite persistir tales flujos en Couchbase as\u00ed como (de forma experimental) crear tal flujo a trav\u00e9s de su protocolo interno de cambio de documentos (DCP).<\/p>\n<p>La persistencia de un DStream funciona de la misma manera que la persistencia de un RDD - s\u00f3lo tiene que utilizar la importaci\u00f3n impl\u00edcita correcta y convertirlo en una representaci\u00f3n de documento. Los siguientes ejemplos muestran c\u00f3mo persistir el contenido de los tweets en un feed de twitter en couchbase:<\/p>\n<p>Encontrar\u00e1 m\u00e1s informaci\u00f3n sobre la compatibilidad con Spark Streaming en <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.0\/connectors\/spark-1.0\/spark-streaming.html\">aqu\u00ed<\/a>.<\/p>\n<h2>El camino por recorrer<\/h2>\n<p>Era importante sacar adelante esta primera versi\u00f3n estable. La pr\u00f3xima versi\u00f3n (1.1) traer\u00e1 compatibilidad oficial con Spark 1.5, as\u00ed como otras mejoras y correcciones de estabilidad. Como siempre, por favor, prueba el conector y danos tu opini\u00f3n sobre lo que crees que deber\u00edamos mejorar.<\/p>\n<p>\u00a1Feliz pirateo, sin errores y con operaciones aleatorias r\u00e1pidas!<\/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 v26.1 (Yoast SEO v26.1.1) - 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\/es\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\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\/es\/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\":\"es\",\"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\":\"es\",\"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\":\"es\",\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\",\"@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\/es\/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\/es\/spark-connector-for-couchbase-1-0-0-released-dataframes-and-sparksql-for-n1ql-included\/","og_locale":"es_MX","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\/es\/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":"es","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":"es","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":"es","@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":"El blog de Couchbase","description":"Couchbase, la base de datos 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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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":"es","@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 trabaja como Ingeniero de Software Principal en Couchbase. Es el arquitecto y mantenedor del SDK Java de Couchbase, uno de los primeros controladores de bases de datos completamente reactivos en la JVM. Tambi\u00e9n es autor y mantiene el conector Spark de Couchbase. Michael participa activamente en la comunidad de c\u00f3digo abierto, contribuyendo a otros proyectos como RxJava y Netty.","sameAs":["https:\/\/nitschinger.at","https:\/\/x.com\/daschl"],"url":"https:\/\/www.couchbase.com\/blog\/es\/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","author_category":"","last_name":"Nitschinger, Principal Software Engineer, Couchbase","first_name":"Michael","job_title":"","user_url":"https:\/\/nitschinger.at","description":"Michael Nitschinger trabaja como Ingeniero de Software Principal en Couchbase. Es el arquitecto y mantenedor del SDK Java de Couchbase, uno de los primeros controladores de bases de datos completamente reactivos en la JVM. Tambi\u00e9n es autor y mantiene el conector Spark de Couchbase. Michael participa activamente en la comunidad de c\u00f3digo abierto, contribuyendo a otros proyectos como RxJava y Netty."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2094","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2094"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2094\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2094"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2094"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2094"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}