Cargar datos CSV en Couchbase utilizando Apache Spark

Últimamente he pasado mucho tiempo trabajando con herramientas de Big Data, en particular con Apache Spark. En caso de que no esté familiarizado, Apache
Spark es una herramienta increíblemente eficiente para procesar cantidades masivas de datos. Su rendimiento es significativamente mejor que el de MapReduce, y en
realidad, no es demasiado difícil de usar.

Apache Spark funciona muy bien en combinación con Couchbase a través del Couchbase Spark Connector. Vamos a ver lo que se necesita para
cargar algunos datos en bruto de valores separados por comas (CSV) en Couchbase utilizando Apache Spark.

Requisitos

No hay demasiados requisitos para poner en marcha este proyecto. Como mínimo necesitarás lo siguiente:

La mayor parte del desarrollo tendrá lugar con el JDK 1.8 y Maven, pero cuando llegue el momento de ejecutar la aplicación, Apache Spark
ya sea a través de una instancia local o remota.

Comprender el conjunto de datos y el modelo de datos

Una buena manera de mojarse los pies en lo que respecta a Apache Spark es obtener un conjunto de datos de muestra a través del sitio web de ciencia de datos,
Kaggle. Para este ejemplo vamos a echar un vistazo al conjunto de datos de muestra llamado
Salarios SF que contiene información sobre cuánto dinero
ganan los empleados de San Francisco.

Desde el punto de vista de los datos, existe un único archivo de valores separados por comas (CSV) denominado salarios.csv con lo siguiente
columnas en él:

  1. Id
  2. NombreEmpleado
  3. Título del puesto
  4. BasePay
  5. Pago de horas extraordinarias
  6. OtrosPaga
  7. Beneficios
  8. TotalPay
  9. TotalPagaBeneficios
  10. Año
  11. Notas
  12. Agencia
  13. Estado

Trabajar con los datos en formato CSV es casi imposible. Más aún cuando se trata de cantidades masivas. En su lugar, estos datos van a ser
almacenados como datos NoSQL para que puedan ser procesados posteriormente. No vamos a entrar en el cálculo de números y consultas aquí, pero vendrá en un
futuro artículo. En este momento sólo queremos ponerlo en formato NoSQL.

Cuando se cargue en Couchbase, cada fila del CSV tendrá un aspecto similar al siguiente:

Sí, el trozo de datos anterior es un documento JSON, que es lo que soporta Couchbase. Ahora que conocemos los objetivos de los datos, podemos empezar
cargar los datos CSV en Couchbase con Apache Spark.

Transformación de los datos brutos y escritura en Couchbase

Para utilizar Apache Spark en una aplicación Java, es necesario incluir algunas dependencias. Necesitamos incluir Spark Core, Spark SQL, Spark CSV, y el módulo
Conector Spark de Couchbase. Como estamos usando Maven, todo se puede incluir a través de Maven pom.xml archivo. Para incluir
Spark Core, incluya la siguiente dependencia en su archivo Maven:

Dado que los datos en bruto estarán en forma de CSV, podemos utilizar el paquete de conveniencia para Spark llamado Spark CSV. La dependencia de Maven
para Spark CSV se puede añadir así:

Los datos CSV se cargarán en un Apache Spark DataFrame. Si no estás familiarizado con los DataFrames, puedes consultarlos utilizando Spark
SQL. Esto es parte de cómo introduciremos los datos en Couchbase. Para incluir Spark SQL en tu proyecto, añade la dependencia de Maven
así:

Finalmente, Apache Spark necesita estar conectado a Couchbase Server. Esto se puede hacer a través del Conector Couchbase para Spark. Para
añada esta dependencia a su proyecto Maven, añada lo siguiente a su proyecto pom.xml file:

Todas las dependencias del proyecto están listas.

Para empezar a cargar datos CSV mediante código Java, primero hay que configurar Apache Spark dentro de nuestro proyecto. Esto incluye definir qué Spark
y en qué bucket de Couchbase almacenar los datos.

El nombre de la aplicación será Salarios SF y el cluster Spark maestro será la máquina local
ya que Spark se ejecutará localmente en este ejemplo. El bucket de Couchbase que se utilizará es, una vez más, el bucket por defecto.

Para crear un Spark DataFrame, se necesita un SQLContext debe crearse a partir del JavaSparkContext.

Utilización de la SQLContext los datos CSV pueden leerse así:

El proceso de lectura utilizará el paquete Spark CSV y conservará la información de cabecera que existe en la parte superior del archivo CSV.
Cuando se leen en un DataFrame, los datos CSV son ahora algo que Couchbase puede entender.

Hay que hacer un ajuste en los datos de id. Spark lo reconocerá como un entero o numérico porque este conjunto de datos sólo tiene
valores numéricos como columna. Couchbase espera un id de cadena.

El DataFrame ya puede prepararse para guardarse en Couchbase.

Con los datos del DataFrame canalizados en el correspondiente DataFrameWriterFunctions el valor de id se puede asignar a un objeto
id del documento. Los datos en este punto se pueden guardar.

Se guardarán cantidades masivas de documentos de Couchbase en el cubo.

Ejecución del proyecto con Apache Spark

Empaqueta el proyecto en un JAR ejecutable usando Maven. El proyecto puede ser ejecutado después de ser empaquetado haciendo lo siguiente
así:

Dependiendo del tamaño del conjunto de datos y de la velocidad de su ordenador o servidor, el proceso de carga puede tardar un rato.

Conclusión

Acabas de probar a cargar datos CSV sucios en Couchbase utilizando Apache Spark y el conector Spark de Couchbase. Spark fue
diseñado para poder procesar rápidamente cantidades masivas de datos en tiempo real. Combínalo con Couchbase y su arquitectura centrada en la memoria.
arquitectura y tienes un gran paquete de software.

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

Autor

Publicado por Nic Raboy, Defensor del Desarrollador, Couchbase

Nic Raboy es un defensor de las tecnologías modernas de desarrollo web y móvil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y móvil más fácil de entender.

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.