Conector Spark de Couchbase - Actualización de la vista previa para desarrolladores

Hacía tiempo que no presentábamos el primer avance para desarrolladores de nuestro nuevo Couchbase Spark Connector. Así que pensamos que era el momento para otra versión, proporcionando mejoras y un puñado de nuevas características. En particular:

  1. Soporte nativo para Spark SQL
  2. Compatibilidad nativa con Spark Streaming
  3. Ubicaciones preferidas para el acceso a claves/valores
  4. Actualizaciones de dependencia

Y lo que es más importante, ahora utilizamos Apache Spark 1.3que será la versión de destino de la versión GA del conector.

Si quieres sumergirte ahora mismo, aquí tienes las coordenadas:

  1. ID de grupo: com.couchbase.client
  2. ID del objeto: spark-connector_2.10 o spark-connector_2.11
  3. Versión: 1.0.0-dp2

Asegúrese de incluir el repositorio Couchbase ya que es una versión preliminar:

Además de la dependencia simple de maven, ahora también estamos disponibles en spark-packages.org!

Soporte Spark SQL

La principal razón para actualizar a Spark 1.3 es la compatibilidad con la nueva API DataFrame. La nueva API DataFrame se basa en SQL y nos permite integrar estrechamente la implementación específica del lenguaje de couchbase, N1QL. Esto proporciona una experiencia de extremo a extremo sin fisuras que es a la vez familiar y estrechamente integrada.

El conector te permite definir relaciones (Couchbase por sí mismo no impone un esquema) y puedes proporcionar un esquema manualmente o puedes dejar que el conector lo infiera por ti. Si quieres la inferencia automática del esquema, es una buena idea proporcionar algún tipo de filtro (por ejemplo, en un campo de tipo) para obtener una mayor precisión. El conector cargará de forma transparente documentos de muestra y creará un esquema por usted que podrá consultar.

He aquí un ejemplo con la muestra de viajes actual:

Esto le imprimirá primero un esquema como:

Y luego los resultados en el formato de:

Si bien esto es genial para trabajar, el verdadero poder viene cuando se desea combinar DataFrames de diferentes fuentes. El siguiente ejemplo obtiene datos de HDFS y Couchbase y los consulta conjuntamente:

Tenga en cuenta que actualmente los objetos JSON anidados y las matrices no están soportados, pero lo estarán en la próxima versión. Pueden aparecer en el esquema, pero fallarán durante la consulta (cuando desee consultar uno de esos campos o incluirlo en el resultado).

Compatibilidad con Spark Streaming

La primera vista previa para desarrolladores ya ofrecía soporte para escribir datos de un flujo Spark en Couchbase. En esta vista previa para desarrolladores, hemos añadido soporte experimental para utilizar nuestro protocolo "DCP" para alimentar mutaciones e información instantánea lo más rápido posible en Spark. Puedes utilizar esto para el análisis casi en tiempo real de los datos a medida que llegan a tu clúster Couchbase.

Tenga en cuenta que actualmente no están implementadas las instantáneas ni la reversión, por lo que la conmutación por error y el reequilibrio no funcionarán como se espera.

He aquí un ejemplo sencillo de cómo introducir cambios desde su cubo:

Eso es todo lo que necesitas hacer en este momento. Asegúrese de probarlo en un cubo vacío, porque actualmente le proporcionará también todos los datos del cubo. Las capacidades para comenzar en la instantánea actual se añadirán en una futura versión. Si ejecutas el código y luego escribes documentos en el bucket, Spark Streaming te notificará esos cambios:

A continuación, puede filtrar las mutaciones y realizar cualquier tipo de operación de flujo en ellos, incluyendo la alimentación de ellos en un algoritmo de aprendizaje automático o el almacenamiento en un almacén de datos diferente después del procesamiento (o incluso de nuevo en couchbase).

Ubicaciones preferidas para el acceso a claves/valores

Uno de los asesinos del rendimiento cuando se utiliza Spark son las operaciones shuffle. Un "shuffle" es una operación que consiste en transferir datos de un trabajador a otro a través de la red. Dado que el tráfico de red siempre es varios órdenes de magnitud más lento que el procesamiento en memoria, es necesario evitar las operaciones aleatorias en la medida de lo posible.

Cuando estás cargando documentos a través de sus IDs únicos, el conector ahora siempre (y de forma transparente) indica a Spark dónde se encuentra el documento en Couchbase. Como resultado, si despliegas un Spark Worker en cada nodo de Couchbase, Spark será lo suficientemente inteligente como para enviar la tarea directamente a este trabajador, eliminando la necesidad de transferir el documento a través de la red y permitiendo el procesamiento local.

Dado que la ubicación es sólo una pista, puede ejecutar sus trabajadores en diferentes nodos y Spark los enviará correctamente si no puede encontrar una coincidencia perfecta.

En el futuro, también planificaremos las ubicaciones preferidas para las búsquedas N1QL y View en función del nodo de destino en el que se ejecutará la consulta.

Funciones previstas y próximos pasos

Aunque esta versión nos acerca a la finalización, aún nos quedan muchas cosas por completar. El próximo hito será una versión beta e incluirá funciones como la API java, mejoras en la compatibilidad con Spark SQL y Streaming y, por supuesto, correcciones y mejoras de estabilidad a medida que las vayamos encontrando.

Dado que aún no hemos llegado a la versión beta, te rogamos que nos proporciones todos los comentarios posibles mientras podemos modificar la API según sea necesario.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Michael Nitschinger

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én es autor y mantiene el conector Spark de Couchbase. Michael participa activamente en la comunidad de código abierto, contribuyendo a otros proyectos como RxJava y Netty.

11 Comentarios

  1. ¿Existe un puerto java para este conector?

    1. existe un paquete java "japi" que proporciona envoltorios orientados a java: https://github.com/couchbasela

  2. acerca de crear índice :

    crear índice testResult_E en testResultado(Prueba12._asda) mediante gsi;
    {
    \"requestID": \”7c7ddd6c-55c5-4aec-9c61-d805c350fdfe\”,
    \firma: null,
    \ "resultados": [
    ],
    \"estado": \"éxito",
    {\i1}"métricas"{\i} {
    \ "elapsedTime\": \"4.970636925s\",
    \"ejecuciónTime": \"4.969727845s\",
    \"resultCount": 0,
    \ "resultSize\": 0
    }
    }

    De hecho, el _asda clave en el jsonDoc \'Test12\' no existe.
    ¿por qué alerta la información de error?

    1. crear un índice no indexa un documento en concreto... aquí lo que has indicado es \ "en el bucket testResult, si existe indexa el campo JSON _asda dentro del campo JSON Test12\". crear un índice para un único documento no tiene sentido, simplemente utiliza \ "WHERE META(bucketName).id = documentId\".

      en resumen, la sintaxis es \ "CREATE INDEX indexName ON bucketName(oneFieldInJSON, orMore, or.even.path.in.JSON)\".

      incluso puede poner una cláusula where al final, por ejemplo, si uno de sus campos es una categoría, indexe sólo una categoría específica: CREATE INDEX topProductsByPrice ON products(price) WHERE category = \"bestseller\".

      también por favor prefiera los foros (http://forums.couchbase.com) para las interacciones con el equipo y las preguntas técnicas, está mucho más vigilado y es más fácil de seguir para nosotros ;)

      1. Hola,
        En couchbase sdk , ¿existe uuid-generator api?

          1. Gracias.
            ¿dónde puedo utilizar el uuid viendo de guía?

            ¿Puede decirme qué motor js utiliza el CS?

          2. Hola,
            ¿cómo puedo averiguar la ruta de js-lib utilizado por CS?
            ¿Y cómo puedo añadir js-lib definido por sef a CS?

          3. utilice los foros (http://forums.couchbase.com) para las interacciones con el equipo y las preguntas técnicas, está mucho más vigilado, es más fácil de trabajar para todos los implicados y puedes publicar preguntas más detalladas allí.

          4. Lo siento, ahora no puedo acceder al sitio web. Porque el httpresponse está siempre en blanco. Puede usted decirle a otros\ 'disqus que me puede ayudar?

          5. Hola,
            ¿CS sólo tiene 10 cubos?

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.