{"id":9411,"date":"2022-12-28T11:53:15","date_gmt":"2022-12-28T10:53:15","guid":{"rendered":"https:\/\/aprenderbigdata.com\/?p=9411"},"modified":"2025-08-17T10:45:37","modified_gmt":"2025-08-17T09:45:37","slug":"dataflow","status":"publish","type":"post","link":"https:\/\/aprenderbigdata.com\/dataflow\/","title":{"rendered":"Dataflow: Streaming y Batch en Google Cloud"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u00bfTe preguntabas cu\u00e1l es el servicio de procesamiento de datos y ETL para Google Cloud Platform? Con Dataflow, puedes procesar grandes cantidades de datos de manera r\u00e1pida y eficiente, sin tener que preocuparte por la administraci\u00f3n de servidores. \u00a1Sigue leyendo para descubrir todos los beneficios y caracter\u00edsticas de este servicio!<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"#formacion\"><img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow-1024x576.jpg\" alt=\"Dataflow Google Cloud\" class=\"wp-image-9444\" style=\"object-fit:cover\" srcset=\"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow-1024x576.jpg 1024w, https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow-300x169.jpg 300w, https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow-768x432.jpg 768w, https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow-800x450.jpg 800w, https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow.jpg 1280w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenidos<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a662103ed9f2\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a662103ed9f2\" checked aria-label=\"Alternar\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#%C2%BFQue-es-Dataflow\" >\u00bfQu\u00e9 es Dataflow?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#Componentes-de-Dataflow\" >Componentes de Dataflow<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#Ventajas-de-Dataflow\" >Ventajas de Dataflow<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#Procesamiento-Batch-y-Streaming-con-Dataflow\" >Procesamiento Batch y Streaming con Dataflow<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#Flexible-Resource-Scheduling-FlexRS\" >Flexible Resource Scheduling (FlexRS)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#Dataflow-Shuffle\" >Dataflow Shuffle<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#Streaming-engine\" >Streaming engine<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#Ejemplo-de-pipeline-sencilla-en-Dataflow\" >Ejemplo de pipeline sencilla en Dataflow<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#Diferencias-entre-Dataflow-y-Dataproc-en-Google-Cloud-Platform\" >Diferencias entre Dataflow y Dataproc en Google Cloud Platform<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#Siguientes-Pasos-con-Dataflow-y-GCP\" >Siguientes Pasos con Dataflow y GCP<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#Certificacion-en-Google-Cloud-ingeniero-de-la-nube\" >Certificaci\u00f3n en Google Cloud: ingeniero de la nube<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#Preguntas-Frecuentes-Dataflow-%E2%80%93-FAQ\" >Preguntas Frecuentes Dataflow &#8211; FAQ<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#%C2%BFEn-que-lenguajes-de-programacion-se-puede-escribir-el-codigo-para-Google-Dataflow\" >\u00bfEn qu\u00e9 lenguajes de programaci\u00f3n se puede escribir el c\u00f3digo para Google Dataflow?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#%C2%BFComo-se-factura-el-uso-de-Google-Dataflow\" >\u00bfC\u00f3mo se factura el uso de Google Dataflow?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/#%C2%BFComo-se-pueden-monitorear-las-operaciones-en-Dataflow\" >\u00bfC\u00f3mo se pueden monitorear las operaciones en Dataflow?<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%C2%BFQue-es-Dataflow\"><\/span>\u00bfQu\u00e9 es Dataflow?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dataflow es el servicio de procesamiento de datos serverless en <strong><a href=\"https:\/\/aprenderbigdata.com\/certificacion-google-cloud-professional-data-engineer\/\">Google Cloud Platform (GCP)<\/a><\/strong> que permite procesar y analizar grandes cantidades de datos en tiempo real o en batches de manera unificada. Es la soluci\u00f3n est\u00e1ndar de <strong><a href=\"https:\/\/aprenderbigdata.com\/etl-vs-elt\/\">ETL<\/a><\/strong> en Google Cloud, m\u00e1s moderna y \u00e1gil que alternativas como <strong><a href=\"https:\/\/aprenderbigdata.com\/dataproc\/\">Dataproc<\/a><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dataflow est\u00e1 basado en <strong><a href=\"https:\/\/aprenderbigdata.com\/apache-beam\/\">Apache Beam<\/a><\/strong> (proyecto open source que combina <strong><a href=\"https:\/\/aprenderbigdata.com\/stream-processing\/\">procesamiento streaming<\/a><\/strong> y batch, de donde viene su nombre) y permite crear flujos de trabajo para procesar, transformar y analizar datos utilizando una variedad de herramientas y lenguajes de programaci\u00f3n. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s de en Dataflow, los proyectos de Apache Beam pueden ser ejecutados en otros <em>runners<\/em> o ejecutores, como por ejemplo <strong><a href=\"https:\/\/aprenderbigdata.com\/introduccion-apache-flink\/\">Apache Flink<\/a><\/strong> o <strong><a href=\"https:\/\/aprenderbigdata.com\/introduccion-apache-spark\/\">Apache Spark<\/a><\/strong>. Otra ventaja que aporta Apache Bean es la capacidad de que cada <em>runner<\/em> funciona con cada lenguaje, por lo que se pueden implementar pipelines multi-lenguaje con transformaciones <em>cross-language<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, Dataflow te permite integrar tus flujos de trabajo con otras herramientas y servicios de Google Cloud, como <strong><a href=\"https:\/\/aprenderbigdata.com\/bigquery\/\">BigQuery<\/a><\/strong> y Cloud Storage a trav\u00e9s de conectores de una manera muy sencilla, lo que proporciona una soluci\u00f3n completa de procesamiento de datos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Componentes-de-Dataflow\"><\/span>Componentes de Dataflow<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La arquitectura de Google Cloud Dataflow se basa en el procesamiento distribuido y consiste en varios componentes clave, como:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Fuentes de datos<\/strong>: Dataflow lee datos de diferentes fuentes, como bases de datos, archivos en Google Cloud Storage o tablas de BigQuery.<\/li>\n\n\n\n<li><strong>Transformaciones<\/strong>: Proporciona un conjunto de transformaciones que se pueden aplicar para limpiar, enriquecer y preparar los datos para su an\u00e1lisis.<\/li>\n\n\n\n<li><strong>Flujo de trabajo<\/strong>: Dataflow permite crear flujos de trabajo para procesar, transformar y analizar datos en tiempo real o en lotes utilizando una variedad de lenguajes de programaci\u00f3n, como <span><a style=\"font-weight: bold;\" href=\"https:\/\/aprenderbigdata.com\/cursos-python\/\">Python<\/a><\/span> o <strong><a href=\"https:\/\/aprenderbigdata.com\/cursos-java-udemy\/\">Java<\/a><\/strong>.<\/li>\n\n\n\n<li><strong>Clusters<\/strong>: El procesamiento se ejecuta en clusters distribuidos de m\u00e1quinas virtuales de Google Cloud. Los clusters se pueden escalar din\u00e1micamente seg\u00fan las necesidades de procesamiento en cada paso independiente. No es necesario administrar ni manejar estos clusters, se hace de forma autom\u00e1tica y transparente.<\/li>\n\n\n\n<li><strong>Sinks<\/strong>: A igual que con las fuentes de datos, Dataflow puede escribir los resultados del procesamiento en una variedad de destinos a trav\u00e9s de conectores.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Para tareas de desarrollo, es posible usar un <em>Runner local<\/em>, mientras que para el procesamiento de producci\u00f3n se usa el <em>Cloud Runner<\/em>. Beam SDK runtime environment se puede contenerizar tambi\u00e9n para aislarlo de otros runtimes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ventajas-de-Dataflow\"><\/span>Ventajas de Dataflow<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Entre las ventajas de Dataflow, podemos destacar las siguientes caracter\u00edsticas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregaciones <strong>exactly-once<\/strong> (cada elemento se procesar\u00e1 exactamente una vez, sin duplicados).<\/li>\n\n\n\n<li>Las pipelines, el c\u00f3digo y las operaciones son las mismas para procesamiento en <strong>streaming y batch<\/strong>.<\/li>\n\n\n\n<li>Una pipeline es m\u00e1s f\u00e1cil de mantener para organizar el c\u00f3digo de procesamiento que una aplicaci\u00f3n en una instancia.<\/li>\n\n\n\n<li>El <strong>autoescalado<\/strong> y rebalanceado ocurre a cada paso en mitad de un trabajo de forma din\u00e1mica.<\/li>\n\n\n\n<li>Las <strong>plantillas<\/strong> de Dataflow se almacenan en Cloud Storage. Esto permite que los usuarios las puedan ejecutar sin escribir c\u00f3digo y separa los desarrolladores de pipelines de los usuarios o consumidores.<\/li>\n\n\n\n<li>Puede ofrecer resultados especulativos (antes de tiempo) o resultados actualizados con la capacidad de procesar <strong>eventos con retraso<\/strong> (allowedLateness)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Procesamiento-Batch-y-Streaming-con-Dataflow\"><\/span>Procesamiento Batch y Streaming con Dataflow<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para manejar los datos, Dataflow usa ventanas de procesamiento. Existen cuatro tipos de ventanas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Global<\/strong>: Ventana por defecto. Todos los eventos formar\u00e1n parte de esta ventana.<\/li>\n\n\n\n<li><strong>Fijas (Fixed)<\/strong>: Ventana con duraci\u00f3n fija de tama\u00f1o constante y disjuntas.<\/li>\n\n\n\n<li><strong>Deslizantes (Sliding)<\/strong>: Tienen un tama\u00f1o constante pero pueden superponerse.<\/li>\n\n\n\n<li><strong>De Sesi\u00f3n (Session)<\/strong>:  Contiene elementos en una duraci\u00f3n de intervalo. Esta duraci\u00f3n es un intervalo entre los datos nuevos de una transmisi\u00f3n. Si los datos llegan despu\u00e9s de la duraci\u00f3n del intervalo, los datos se asignar\u00e1n a una ventana nueva.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/datos-en-la-nube-IA.jpeg\" alt=\"Datos en la nube IA\" class=\"wp-image-9451\" style=\"width:256px;height:256px\" srcset=\"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/datos-en-la-nube-IA.jpeg 512w, https:\/\/aprenderbigdata.com\/wp-content\/uploads\/datos-en-la-nube-IA-300x300.jpeg 300w, https:\/\/aprenderbigdata.com\/wp-content\/uploads\/datos-en-la-nube-IA-150x150.jpeg 150w, https:\/\/aprenderbigdata.com\/wp-content\/uploads\/datos-en-la-nube-IA-120x120.jpeg 120w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n gestiona las <strong>marcas de agua<\/strong> (watermarks). Son l\u00edmites temporales que indican el retraso que lleva el sistema en el procesamiento de datos respecto al tiempo de eventos. Dicho de otra forma, si llegan datos cuya marca temporal es anterior al watermark, Dataflow los considera tard\u00edos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por defecto, Dataflow determina cuando todos los datos han llegado y avanza el watermark al final de la ventana. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los <strong>triggers<\/strong> o activadores determinan el momento en el que entregar los resultados del procesamiento. El trigger por defecto es \u00abAfterWatermark\u00bb, lo que indica que los resultados se entregan cuando el watermark pasa el final de la ventana. Se pueden establecer triggers por hora del elemento, por tiempo de procesamiento o por la cantidad de elementos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Art\u00edculos Recomendados:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/aprenderbigdata.com\/introduccion-apache-flink\/\">Introducci\u00f3n a Apache Flink<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/aprenderbigdata.com\/stream-processing\/\">Stream processing &#8211; Tecnolog\u00edas y Comparativa<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Flexible-Resource-Scheduling-FlexRS\"><\/span>Flexible Resource Scheduling (FlexRS)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Esta capacidad del servicio hace que Dataflow se ejecute con coste m\u00e1s reducido, usando una mezcla de m\u00e1quinas virtuales normales y de instancias interrumpibles (preemptible) como workers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este modo de ejecuci\u00f3n solo es apropiado para cargas de trabajo que no son cr\u00edticas, ya que deja el trabajo planificado y lo encola para su ejecuci\u00f3n, que puede ser hasta 6 horas despu\u00e9s de su creaci\u00f3n. Cuando se planifica el trabajo, Dataflow realiza una serie de validaciones sobre los par\u00e1metros de ejecuci\u00f3n, las configuraciones, las cuotas y los permisos. En el caso de detectar un fallo, el error se reporta inmediatamente sin esperar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Dataflow-Shuffle\"><\/span>Dataflow Shuffle<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Esta capacidad solo est\u00e1 disponible para trabajos batch, y mueve las operaciones de shuffle fuera de las m\u00e1quinas worker para ejecutarlo en un servicio backend. Permite acelerar la ejecuci\u00f3n de estos trabajos y reduce el consumo de CPU, memoria y disco persistente.<\/p>\n\n\n\n<div class=\"wp-block-group pre-su\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<pre class=\"wp-block-preformatted\"><div class=\"su-service\"><div class=\"su-service-title\" style=\"padding-left:44px;min-height:30px;line-height:30px\"><i class=\"sui sui-info-circle\" style=\"font-size:30px;color:#e74273\"><\/i> \u00bfQuieres Convertirte en Ingeniero de Datos?<\/div><div class=\"su-service-content su-u-clearfix su-u-trim\" style=\"padding-left:44px\"><br>Consigue empleo con el <a href=\"https:\/\/aprenderbigdata.com\/curso-ingeniero-datos\/\">programa acelerado de Data Engineer<\/a><br><\/div><\/div><\/pre>\n<\/div><\/div>\n\n\n<style>.pre-su pre {<br \/>\n\tbackground-color: #fffae9 !important;<br \/>\n}<br \/>\n<\/style>\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n proporciona un mejor autoescalado; las m\u00e1quinas virtuales con los nodos worker no necesitan almacenar datos de shuffle, por lo que pueden ser reducidos mucho antes. Por otro lado, cuando una m\u00e1quina virtual tiene un fallo, puede ser reemplazada sin que falle todo el trabajo. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Streaming-engine\"><\/span>Streaming engine<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El igual que ocurre con el shuffle en los trabajos batch, la capacidad de streaming engine de Dataflow permite mover el almacenamiento del estado de las ventanas de procesamiento en los trabajos de streaming a un servicio backend. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto significa que se reduce la necesidad de discos persistentes en las m\u00e1quinas virtuales a un disco m\u00ednimo de boot. Al moverse el shuffle a un servicio externo, se aumenta la eficiencia del procesamiento y se vuelve m\u00e1s \u00e1gil para responder ante variaciones en el volumen de datos entrantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n evita tener que redesplegar las pipelines para aplicar actualizaciones de servicio. Usar streaming engine en Dataflow no necesita cambios en el c\u00f3digo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ejemplo-de-pipeline-sencilla-en-Dataflow\"><\/span>Ejemplo de pipeline sencilla en Dataflow<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En Dataflow los datos se representan en estructuras llamadas <em>PCollections<\/em>. Estas estructuras no son identicas a los RDDs de Spark, y para migrar este c\u00f3digo debemos adaptarlo a Dataflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada paso de procesamiento es un <em>PTransform<\/em>. La combinaci\u00f3n de <em><a href=\"https:\/\/beam.apache.org\/releases\/javadoc\/2.0.0\/org\/apache\/beam\/sdk\/transforms\/PTransform.html\" target=\"_blank\" rel=\"noreferrer noopener\">PTransform<\/a><\/em> forman una <strong><a href=\"https:\/\/aprenderbigdata.com\/pipeline-de-datos\/\">pipeline<\/a><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed tienes un ejemplo de una pipeline sencilla en Dataflow de Google Cloud Platform (GCP) que lee un archivo de texto de Cloud Storage, cuenta la frecuencia de aparici\u00f3n de cada palabra y escribe los resultados en una tabla de BigQuery:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>import apache_beam as beam\nfrom apache_beam.io import ReadFromText\nfrom apache_beam.io import WriteToBigQuery\n\np = beam.Pipeline()\n\ninput_file = 'gs:\/\/my-bucket\/input.txt'\noutput_table = 'my-project:my-dataset.word_counts'\n\n(p \n | ReadFromText(input_file) \n | beam.FlatMap(lambda x: x.split()) \n | beam.Map(lambda x: (x, 1)) \n | beam.CombinePerKey(sum) \n | WriteToBigQuery(output_table)\n)\n\np.run()\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este ejemplo, primero se importan las librer\u00edas necesarias y se crea un objeto de Pipeline. Luego, se define la ruta del archivo de entrada y la tabla de BigQuery de salida. La pipeline se construye utilizando una serie de operadores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n tienes ejemplos de algunos operadores comunes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>ParDo<\/strong>: Permite el procesamiento paralelo, necesita que se proporcione c\u00f3digo en forma de DoFn<\/li>\n\n\n\n<li><strong>Map<\/strong>: Relaci\u00f3n 1:1 entre entrada y salida<\/li>\n\n\n\n<li><strong>FlatMap<\/strong>: Para relaciones que no son 1:1 entre entrada y salida<\/li>\n\n\n\n<li><strong>GroupBy<\/strong>: Shuffle<\/li>\n\n\n\n<li><strong>GroupByKey<\/strong>: Shuffle expl\u00edcito por clave<\/li>\n\n\n\n<li><strong>CoGroupByKey<\/strong>: Agrupa los resultados de varias PCollections por clave<\/li>\n\n\n\n<li><strong>Combine<\/strong>: Agrega los valores, puede ser m\u00e1s eficiente que groupbykey al hacerlo antes de la fase de shuffle<\/li>\n\n\n\n<li><strong>CombineGloballlyfn<\/strong>: Reduce una PCollection a un solo valor<\/li>\n\n\n\n<li><strong>CombinePerKey:<\/strong> Comba los valores por una funci\u00f3n combinada que toma una acci\u00f3n iterable como sum o max<\/li>\n\n\n\n<li><strong>Flatten<\/strong>: Une PCollection id\u00e9nticas (UNION)<\/li>\n\n\n\n<li><strong>Partition<\/strong>: Divide una PCollection en un n\u00famero fijo de colecciones de datos m\u00e1s peque\u00f1as<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de usar una transformaci\u00f3n de grupo como GroupByKey en una PCollection sin l\u00edmites debes establecer una ventana de procesamiento no global o un trigger que no sea por defecto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed tienes un ejemplo de c\u00f3digo que utiliza Apache Beam y Google Cloud Dataflow para procesar datos en paralelo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>from google.cloud import dataflow\n\n# Define la fuente de datos\nsource = dataflow.io.TextIO('gs:\/\/my-bucket\/input\/*.csv')\n\n# Define la transformaci\u00f3n para procesar los datos\ndef process_data(record):\n  # Procesar los datos aqu\u00ed\n  return record\n\n# Aplicar la transformaci\u00f3n a los datos en paralelo\nprocessed_data = source | dataflow.ParDo(process_data)\n\n# Escribir los resultados en un archivo de salida\nprocessed_data | dataflow.io.TextIO('gs:\/\/my-bucket\/output\/processed.csv')\n\n# Ejecutar la pipeline\ndataflow.Pipeline().run()<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este ejemplo, se utiliza el transformador <code>ParDo<\/code> de Apache Beam para aplicar la transformaci\u00f3n <code>process_data<\/code> a los datos en paralelo. Esto permite acelerar el procesamiento de datos al distribuir el trabajo entre varios nodos del cluster.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Diferencias-entre-Dataflow-y-Dataproc-en-Google-Cloud-Platform\"><\/span>Diferencias entre Dataflow y Dataproc en Google Cloud Platform<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/aprenderbigdata.com\/dataproc\/\"><img decoding=\"async\" width=\"256\" height=\"256\" src=\"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataproc.png\" alt=\"Google Dataproc Logo\" class=\"wp-image-9452\" style=\"width:128px;height:128px\" srcset=\"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataproc.png 256w, https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataproc-150x150.png 150w, https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataproc-120x120.png 120w\" sizes=\"(max-width: 256px) 100vw, 256px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Google Cloud Dataflow y Cloud Dataproc son dos servicios de procesamiento de datos en la nube ofrecidos por Google Cloud Platform. Aunque ambos servicios se utilizan para procesar y analizar grandes cantidades de datos, existen algunas diferencias clave entre ellos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dataflow utiliza Apache Beam y Spark como plataformas de procesamiento de datos, mientras que Dataproc utiliza <strong><a href=\"https:\/\/aprenderbigdata.com\/dataproc\/\">Apache Hadoop<\/a><\/strong> y Spark. Por este motivo, Dataproc es la opci\u00f3n preferida cuando se necesitan migrar cargas de trabajo ya desarrolladas en Spark en clusters onprem. Es la opci\u00f3n directa llamada <em>lift and shift<\/em> (mover la aplicaci\u00f3n y los datos sin redise\u00f1arla ni recodificar).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el caso de nuevos desarrollos, es aconsejable realizarlos en Dataflow, puesto que es m\u00e1s flexible y eficiente en procesamiento y en coste. Adem\u00e1s, los desarrollos para Dataflow son reutilizables en un gran n\u00famero de runners, como Apache Spark.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Otra diferencia importante es la forma en que se cobra cada servicio. Dataflow se cobra por el uso de recursos y tiempo de ejecuci\u00f3n, mientras que Dataproc se cobra por el uso de clusters. Esto significa que Dataflow puede ser m\u00e1s adecuado para aplicaciones de procesamiento de datos que necesitan un rendimiento constante, mientras que Dataproc puede ser m\u00e1s adecuado para aplicaciones de procesamiento de datos que necesitan grandes cantidades de recursos de manera ocasional.<\/p>\n\n\n\n<h2 class=\"wp-block-heading wp-embed-aspect-16-9 wp-has-aspect-ratio\" id=\"formacion\"><span class=\"ez-toc-section\" id=\"Siguientes-Pasos-con-Dataflow-y-GCP\"><\/span>Siguientes Pasos con Dataflow y GCP<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-embed-aspect-16-9 wp-has-aspect-ratio wp-block-paragraph\">\u00bfQuieres aprender m\u00e1s sobre Google Cloud y Dataflow? Actualmente es una de las nubes p\u00fablicas con m\u00e1s crecimiento, y ser de los primeros profesionales en formarte en su uso te aportar\u00e1 una gran ventaja.<\/p>\n\n\n\n<div class=\"wp-block-columns wp-embed-aspect-16-9 wp-has-aspect-ratio is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/imp.i384100.net\/4evAV3\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/google-cloud-ingeniero-certificacion.jpg\" alt=\"Google Cloud y BigQuery ingeniero Certificaci\u00f3n\" class=\"wp-image-9031\" srcset=\"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/google-cloud-ingeniero-certificacion.jpg 300w, https:\/\/aprenderbigdata.com\/wp-content\/uploads\/google-cloud-ingeniero-certificacion-150x150.jpg 150w, https:\/\/aprenderbigdata.com\/wp-content\/uploads\/google-cloud-ingeniero-certificacion-120x120.jpg 120w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Certificacion-en-Google-Cloud-ingeniero-de-la-nube\"><\/span><a href=\"https:\/\/imp.i384100.net\/4evAV3\" target=\"_blank\" rel=\"noopener nofollow\">Certificaci\u00f3n en Google Cloud: ingeniero de la nube<\/a><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pienso que este curso de Coursera es una excelente opci\u00f3n para cualquier persona interesada en aprender sobre GCP y adem\u00e1s preparar las certificaciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Te facilitar\u00e1 enormemente aprender las habilidades que necesitas para avanzar en tu carrera a trav\u00e9s de presentaciones, demos y laboratorios. En el curso explorar\u00e1s y desplegar\u00e1s elementos de Google Cloud a trav\u00e9s de proyectos de Qwiklabs que podr\u00e1s compartir tambi\u00e9n con empresas en los procesos de selecci\u00f3n. Tambi\u00e9n podr\u00e1s practicar habilidades de configuraci\u00f3n e implementaci\u00f3n de entornos diversos.<\/p>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Preguntas-Frecuentes-Dataflow-%E2%80%93-FAQ\"><\/span>Preguntas Frecuentes Dataflow &#8211; FAQ<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h3><span class=\"ez-toc-section\" id=\"%C2%BFEn-que-lenguajes-de-programacion-se-puede-escribir-el-codigo-para-Google-Dataflow\"><\/span>\u00bfEn qu\u00e9 lenguajes de programaci\u00f3n se puede escribir el c\u00f3digo para Google Dataflow?<span class=\"ez-toc-section-end\"><\/span><\/h3>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\">El c\u00f3digo para Google Dataflow se puede escribir en varios lenguajes de programaci\u00f3n, incluyendo Java, Python y otros lenguajes que sean compatibles con Apache Beam.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h3><span class=\"ez-toc-section\" id=\"%C2%BFComo-se-factura-el-uso-de-Google-Dataflow\"><\/span>\u00bfC\u00f3mo se factura el uso de Google Dataflow?<span class=\"ez-toc-section-end\"><\/span><\/h3>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\">Google Dataflow se factura seg\u00fan el consumo de recursos de procesamiento y almacenamiento. El coste exacto depende de la cantidad de datos procesados y del tiempo de procesamiento utilizado.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section\t\thelp class=\"sc_fs_faq sc_card    \"\n\t\t\t\t>\n\t\t\t\t<h3><span class=\"ez-toc-section\" id=\"%C2%BFComo-se-pueden-monitorear-las-operaciones-en-Dataflow\"><\/span>\u00bfC\u00f3mo se pueden monitorear las operaciones en Dataflow?<span class=\"ez-toc-section-end\"><\/span><\/h3>\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"sc_fs_faq__content\">\n\t\t\t\t\n\n<p class=\"wp-block-paragraph\">Puedes usar el panel de control de Dataflow en la consola de Google Cloud Platform para ver el estado de tus trabajos de Dataflow y obtener informaci\u00f3n sobre el rendimiento y los errores.<\/p>\n\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<\/section>\n\t\t\n<script type=\"application\/ld+json\">\n\t{\n\t\t\"@context\": \"https:\/\/schema.org\",\n\t\t\"@type\": \"FAQPage\",\n\t\t\"mainEntity\": [\n\t\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"\u00bfEn qu\u00e9 lenguajes de programaci\u00f3n se puede escribir el c\u00f3digo para Google Dataflow?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>El c\u00f3digo para Google Dataflow se puede escribir en varios lenguajes de programaci\u00f3n, incluyendo Java, Python y otros lenguajes que sean compatibles con Apache Beam.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"\u00bfC\u00f3mo se factura el uso de Google Dataflow?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>Google Dataflow se factura seg\u00fan el consumo de recursos de procesamiento y almacenamiento. El coste exacto depende de la cantidad de datos procesados y del tiempo de procesamiento utilizado.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t,\t\t\t\t{\n\t\t\t\t\"@type\": \"Question\",\n\t\t\t\t\"name\": \"\u00bfC\u00f3mo se pueden monitorear las operaciones en Dataflow?\",\n\t\t\t\t\"acceptedAnswer\": {\n\t\t\t\t\t\"@type\": \"Answer\",\n\t\t\t\t\t\"text\": \"<p>Puedes usar el panel de control de Dataflow en la consola de Google Cloud Platform para ver el estado de tus trabajos de Dataflow y obtener informaci\u00f3n sobre el rendimiento y los errores.<\/p>\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t]\n\t}\n<\/script>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<p class=\"responsive-video-wrap clr\"><iframe title=\"Pipeline Simple en Java con DATAFLOW: An\u00e1lisis serverless de datos (CGP #7)\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/iYNNwWQ08-o?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe><\/p>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div class=\"wp-block-group newsletter-re\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<!-- Begin Brevo Form -->\n<!-- START - We recommend to place the below code in head tag of your website html  -->\n<style>\n  @font-face {\n    font-display: block;\n    font-family: Roboto;\n  }\n\n  @font-face {\n    font-display: fallback;\n    font-family: Roboto;\n    font-weight: 600;\n  }\n\n  @font-face {\n    font-display: fallback;\n    font-family: Roboto;\n    font-weight: 700;\n  }\n\n  #sib-container input:-ms-input-placeholder {\n    text-align: left;\n    font-family: \"Helvetica\", sans-serif;\n    color: #c0ccda;\n  }\n\n  #sib-container input::placeholder {\n    text-align: left;\n    font-family: \"Helvetica\", sans-serif;\n    color: #c0ccda;\n  }\n\n  #sib-container textarea::placeholder {\n    text-align: left;\n    font-family: \"Helvetica\", sans-serif;\n    color: #c0ccda;\n  }\n<\/style>\n<link rel=\"stylesheet\" href=\"https:\/\/sibforms.com\/forms\/end-form\/build\/sib-styles.css\">\n<!--  END - We recommend to place the above code in head tag of your website html -->\n\n<!-- START - We recommend to place the below code where you want the form in your website html  -->\n<div class=\"sib-form\" style=\"text-align: center;\n         background-color: #ffffff;                                 \">\n  <div id=\"sib-form-container\" class=\"sib-form-container\">\n    <div id=\"error-message\" class=\"sib-form-message-panel\" style=\"font-size:16px; text-align:left; font-family:&quot;Helvetica&quot;, sans-serif; color:#661d1d; background-color:#ffeded; border-radius:3px; border-color:#ff4949;max-width:600px;\">\n      <div class=\"sib-form-message-panel__text sib-form-message-panel__text--center\">\n        <svg viewBox=\"0 0 512 512\" class=\"sib-icon sib-notification__icon\">\n          <path d=\"M256 40c118.621 0 216 96.075 216 216 0 119.291-96.61 216-216 216-119.244 0-216-96.562-216-216 0-119.203 96.602-216 216-216m0-32C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm-11.49 120h22.979c6.823 0 12.274 5.682 11.99 12.5l-7 168c-.268 6.428-5.556 11.5-11.99 11.5h-8.979c-6.433 0-11.722-5.073-11.99-11.5l-7-168c-.283-6.818 5.167-12.5 11.99-12.5zM256 340c-15.464 0-28 12.536-28 28s12.536 28 28 28 28-12.536 28-28-12.536-28-28-28z\" \/>\n        <\/svg>\n        <span class=\"sib-form-message-panel__inner-text\">\n                          Tu suscripci\u00f3n no ha podido guardarse. Por favor vuelve a intentarlo.\n                      <\/span>\n      <\/div>\n    <\/div>\n    <div><\/div>\n    <div id=\"success-message\" class=\"sib-form-message-panel\" style=\"font-size:16px; text-align:left; font-family:&quot;Helvetica&quot;, sans-serif; color:#085229; background-color:#e7faf0; border-radius:3px; border-color:#13ce66;max-width:600px;\">\n      <div class=\"sib-form-message-panel__text sib-form-message-panel__text--center\">\n        <svg viewBox=\"0 0 512 512\" class=\"sib-icon sib-notification__icon\">\n          <path d=\"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 464c-118.664 0-216-96.055-216-216 0-118.663 96.055-216 216-216 118.664 0 216 96.055 216 216 0 118.663-96.055 216-216 216zm141.63-274.961L217.15 376.071c-4.705 4.667-12.303 4.637-16.97-.068l-85.878-86.572c-4.667-4.705-4.637-12.303.068-16.97l8.52-8.451c4.705-4.667 12.303-4.637 16.97.068l68.976 69.533 163.441-162.13c4.705-4.667 12.303-4.637 16.97.068l8.451 8.52c4.668 4.705 4.637 12.303-.068 16.97z\" \/>\n        <\/svg>\n        <span class=\"sib-form-message-panel__inner-text\">\n                          Gracias por suscribirte \ud83d\ude42\n                      <\/span>\n      <\/div>\n    <\/div>\n    <div><\/div>\n    <div id=\"sib-container\" class=\"sib-container--large sib-container--vertical\" style=\"text-align:center; background-color:rgba(249,250,251,1); max-width:600px; border-radius:7px; border-width:1px; border-color:#C0CCD9; border-style:solid; direction:ltr\">\n      <form id=\"sib-form\" method=\"POST\" action=\"https:\/\/45b7c589.sibforms.com\/serve\/MUIFAJUHX74hhdn6yVc3sScAj33FFxSgDh2U31jEyO8bXeQmVM0dKSOmYifgH3XNPOP2aDViwVBs9N6McSTxHJEzEx-3nNpomebkJUWOi7_tG2VHKFLj6EeyMplUrpj_VNPjl6BSC9WBN_uOLGnlnyKzUoB1RDaXbz1sakGbox07jJ2toYKwtJ0EyDjJmvQkZmF7Wk4iEcUMBwrU\" data-type=\"subscription\">\n        <div style=\"padding: 8px 0;\">\n          <div class=\"sib-form-block\" style=\"font-size:25px; text-align:center; font-weight:700; font-family:&quot;Helvetica&quot;, sans-serif; color:#3C4858; background-color:transparent; text-align:center\">\n            <p><strong>\u00danete a la Comunidad Big Data<\/strong><\/p>\n          <\/div>\n        <\/div>\n        <div style=\"padding: 8px 0;\">\n          <div class=\"sib-form-block\" style=\"font-size:16px; text-align:center; font-family:&quot;Helvetica&quot;, sans-serif; color:#3C4858; background-color:transparent; text-align:center\">\n            <div class=\"sib-text-form-block\">\n              <p>Tu conocimiento es la herramienta m\u00e1s potente. Suscr\u00edbete a la lista de correo para mantenerte al d\u00eda con los art\u00edculos m\u00e1s \u00fatiles para tu carrera en Big Data y Cloud. Sin spam, nunca.<\/p>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div style=\"padding: 8px 0;\">\n          <div class=\"sib-input sib-form-block\">\n            <div class=\"form__entry entry_block\">\n              <div class=\"form__label-row \">\n\n                <div class=\"entry__field\">\n                  <input class=\"input \" type=\"text\" id=\"EMAIL\" name=\"EMAIL\" autocomplete=\"off\" placeholder=\"TU EMAIL\" data-required=\"true\" required \/>\n                <\/div>\n              <\/div>\n\n              <label class=\"entry__error entry__error--primary\" style=\"font-size:16px; text-align:left; font-family:&quot;Helvetica&quot;, sans-serif; color:#661d1d; background-color:#ffeded; border-radius:3px; border-color:#ff4949;\">\n              <\/label>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div style=\"padding: 8px 0;\">\n          <div class=\"sib-optin sib-form-block\" data-required=\"true\">\n            <div class=\"form__entry entry_mcq\">\n              <div class=\"form__label-row \">\n                <div class=\"entry__choice\" style=\"text-align:center;\">\n                  <label>\n                    <input type=\"checkbox\" class=\"input_replaced\" value=\"1\" id=\"OPT_IN\" name=\"OPT_IN\" required \/>\n                    <span class=\"checkbox checkbox_tick_positive\"\n            style=\"margin-left:\"\n            ><\/span><span style=\"font-size:13px; text-align:left; font-family:&quot;Helvetica&quot;, sans-serif; color:#3C4858; background-color:transparent;\"><p>Acepto la <a href=\"https:\/\/aprenderbigdata.com\/privacidad\/\" target=\"_blank\" rel=\"noopener\">pol\u00edtica de privacidad<\/a><\/p><span data-required=\"*\" style=\"display: inline;\" class=\"entry__label entry__label_optin\"><\/span><\/span> <\/label>\n                <\/div>\n              <\/div>\n              <label class=\"entry__error entry__error--primary\" style=\"font-size:16px; text-align:left; font-family:&quot;Helvetica&quot;, sans-serif; color:#661d1d; background-color:#ffeded; border-radius:3px; border-color:#ff4949;\">\n              <\/label>\n            <\/div>\n          <\/div>\n        <\/div>\n        <div style=\"padding: 8px 0;\">\n          <div class=\"sib-form-block\" style=\"text-align: center\">\n            <button class=\"sib-form-block__button sib-form-block__button-with-loader\" style=\"font-size:13px; text-align:center; font-weight:700; font-family:&quot;Helvetica&quot;, sans-serif; color:#FFFFFF; background-color:#13aff0; border-radius:3px; border-width:0px;\" form=\"sib-form\" type=\"submit\">\n              <svg class=\"icon clickable__icon progress-indicator__icon sib-hide-loader-icon\" viewBox=\"0 0 512 512\">\n                <path d=\"M460.116 373.846l-20.823-12.022c-5.541-3.199-7.54-10.159-4.663-15.874 30.137-59.886 28.343-131.652-5.386-189.946-33.641-58.394-94.896-95.833-161.827-99.676C261.028 55.961 256 50.751 256 44.352V20.309c0-6.904 5.808-12.337 12.703-11.982 83.556 4.306 160.163 50.864 202.11 123.677 42.063 72.696 44.079 162.316 6.031 236.832-3.14 6.148-10.75 8.461-16.728 5.01z\" \/>\n              <\/svg>\n              \u00a1SUSCR\u00cdBEME GRATIS!\n            <\/button>\n          <\/div>\n        <\/div>\n\n        <input type=\"text\" name=\"email_address_check\" value=\"\" class=\"input--hidden\">\n        <input type=\"hidden\" name=\"locale\" value=\"en\">\n      <\/form>\n    <\/div>\n  <\/div>\n<\/div>\n<!-- END - We recommend to place the below code where you want the form in your website html  -->\n\n<!-- START - We recommend to place the below code in footer or bottom of your website html  -->\n<script>\n  window.REQUIRED_CODE_ERROR_MESSAGE = 'Please choose a country code';\n  window.LOCALE = 'en';\n  window.EMAIL_INVALID_MESSAGE = window.SMS_INVALID_MESSAGE = \"La informaci\u00f3n proporcionada no es v\u00e1lida. Por favor, revisa el formato y vuelve a intentarlo.\";\n\n  window.REQUIRED_ERROR_MESSAGE = \"Este campo no puede estar vac\u00edo. \";\n\n  window.GENERIC_INVALID_MESSAGE = \"La informaci\u00f3n proporcionada no es v\u00e1lida. Por favor, revisa el formato y vuelve a intentarlo.\";\n\n  window.translation = {\n    common: {\n      selectedList: '{quantity} list selected',\n      selectedLists: '{quantity} lists selected'\n    }\n  };\n\n  var AUTOHIDE = Boolean(1);\n<\/script>\n<script defer src=\"https:\/\/sibforms.com\/forms\/end-form\/build\/main.js\"><\/script>\n\n<!-- END - We recommend to place the above code in footer or bottom of your website html  -->\n<!-- End Brevo Form -->\n\n\n\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Aprende qu\u00e9 es Dataflow con esta introducci\u00f3n: El servicio que unifica el procesamiento streaming y batch en Google Cloud Platform<\/p>\n","protected":false},"author":1,"featured_media":9444,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"ocs-posts-sidebar","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"off","ocean_gallery_id":[],"footnotes":""},"categories":[8],"tags":[169,12,9],"class_list":["post-9411","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-herramientas-big-data","tag-coursera","tag-faq","tag-video","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dataflow: Streaming y Batch en Google Cloud - Introducci\u00f3n<\/title>\n<meta name=\"description\" content=\"\u27a8 Aprende qu\u00e9 es Dataflow con esta introducci\u00f3n: El servicio que unifica el procesamiento streaming y batch en Google Cloud Platform\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/aprenderbigdata.com\/dataflow\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dataflow: Streaming y Batch en Google Cloud - Introducci\u00f3n\" \/>\n<meta property=\"og:description\" content=\"\u27a8 Aprende qu\u00e9 es Dataflow con esta introducci\u00f3n: El servicio que unifica el procesamiento streaming y batch en Google Cloud Platform\" \/>\n<meta property=\"og:url\" content=\"https:\/\/aprenderbigdata.com\/dataflow\/\" \/>\n<meta property=\"og:site_name\" content=\"Aprender BIG DATA\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-28T10:53:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-17T09:45:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Oscar Fernandez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@oscarfmdc\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oscar Fernandez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"29 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/\"},\"author\":{\"name\":\"Oscar Fernandez\",\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/#\\\/schema\\\/person\\\/321e79dd84000e4b71b0dac998d5c707\"},\"headline\":\"Dataflow: Streaming y Batch en Google Cloud\",\"datePublished\":\"2022-12-28T10:53:15+00:00\",\"dateModified\":\"2025-08-17T09:45:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/\"},\"wordCount\":1997,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/aprenderbigdata.com\\\/wp-content\\\/uploads\\\/Dataflow.jpg\",\"keywords\":[\"Coursera\",\"FAQ\",\"Video\"],\"articleSection\":[\"Herramientas Big Data\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/\",\"url\":\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/\",\"name\":\"Dataflow: Streaming y Batch en Google Cloud - Introducci\u00f3n\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/aprenderbigdata.com\\\/wp-content\\\/uploads\\\/Dataflow.jpg\",\"datePublished\":\"2022-12-28T10:53:15+00:00\",\"dateModified\":\"2025-08-17T09:45:37+00:00\",\"description\":\"\u27a8 Aprende qu\u00e9 es Dataflow con esta introducci\u00f3n: El servicio que unifica el procesamiento streaming y batch en Google Cloud Platform\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/#primaryimage\",\"url\":\"https:\\\/\\\/aprenderbigdata.com\\\/wp-content\\\/uploads\\\/Dataflow.jpg\",\"contentUrl\":\"https:\\\/\\\/aprenderbigdata.com\\\/wp-content\\\/uploads\\\/Dataflow.jpg\",\"width\":1280,\"height\":720,\"caption\":\"Dataflow Google Cloud\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/dataflow\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/aprenderbigdata.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dataflow: Streaming y Batch en Google Cloud\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/#website\",\"url\":\"https:\\\/\\\/aprenderbigdata.com\\\/\",\"name\":\"Aprender BIG DATA\",\"description\":\"Aprende Big Data desde cero\",\"publisher\":{\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/aprenderbigdata.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/#organization\",\"name\":\"AprenderBigData\",\"url\":\"https:\\\/\\\/aprenderbigdata.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/aprenderbigdata.com\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/cropped-favicon.png\",\"contentUrl\":\"https:\\\/\\\/aprenderbigdata.com\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/cropped-favicon.png\",\"width\":512,\"height\":512,\"caption\":\"AprenderBigData\"},\"image\":{\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/aprenderbigdata.com\\\/#\\\/schema\\\/person\\\/321e79dd84000e4b71b0dac998d5c707\",\"name\":\"Oscar Fernandez\",\"description\":\"Arquitecto de Datos con m\u00e1s de 10 a\u00f1os de experiencia en el sector del Big Data. Autor de cursos de formaci\u00f3n en tecnolog\u00edas Big Data, Cloud y Streaming completados por m\u00e1s de 7000 alumnos en Udemy y otras plataformas. Miembro de la Apache Software Foundation desde 2019.\",\"sameAs\":[\"instagram.com\\\/oscarfmdc\",\"linkedin.com\\\/in\\\/oscarfmdc\\\/\",\"https:\\\/\\\/x.com\\\/oscarfmdc\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCBqzJ1QI3jkkIYXLL9gVpWQ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dataflow: Streaming y Batch en Google Cloud - Introducci\u00f3n","description":"\u27a8 Aprende qu\u00e9 es Dataflow con esta introducci\u00f3n: El servicio que unifica el procesamiento streaming y batch en Google Cloud Platform","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:\/\/aprenderbigdata.com\/dataflow\/","og_locale":"es_ES","og_type":"article","og_title":"Dataflow: Streaming y Batch en Google Cloud - Introducci\u00f3n","og_description":"\u27a8 Aprende qu\u00e9 es Dataflow con esta introducci\u00f3n: El servicio que unifica el procesamiento streaming y batch en Google Cloud Platform","og_url":"https:\/\/aprenderbigdata.com\/dataflow\/","og_site_name":"Aprender BIG DATA","article_published_time":"2022-12-28T10:53:15+00:00","article_modified_time":"2025-08-17T09:45:37+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow.jpg","type":"image\/jpeg"}],"author":"Oscar Fernandez","twitter_card":"summary_large_image","twitter_image":"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow.jpg","twitter_creator":"@oscarfmdc","twitter_misc":{"Escrito por":"Oscar Fernandez","Tiempo de lectura":"29 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/aprenderbigdata.com\/dataflow\/#article","isPartOf":{"@id":"https:\/\/aprenderbigdata.com\/dataflow\/"},"author":{"name":"Oscar Fernandez","@id":"https:\/\/aprenderbigdata.com\/#\/schema\/person\/321e79dd84000e4b71b0dac998d5c707"},"headline":"Dataflow: Streaming y Batch en Google Cloud","datePublished":"2022-12-28T10:53:15+00:00","dateModified":"2025-08-17T09:45:37+00:00","mainEntityOfPage":{"@id":"https:\/\/aprenderbigdata.com\/dataflow\/"},"wordCount":1997,"commentCount":0,"publisher":{"@id":"https:\/\/aprenderbigdata.com\/#organization"},"image":{"@id":"https:\/\/aprenderbigdata.com\/dataflow\/#primaryimage"},"thumbnailUrl":"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow.jpg","keywords":["Coursera","FAQ","Video"],"articleSection":["Herramientas Big Data"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/aprenderbigdata.com\/dataflow\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/aprenderbigdata.com\/dataflow\/","url":"https:\/\/aprenderbigdata.com\/dataflow\/","name":"Dataflow: Streaming y Batch en Google Cloud - Introducci\u00f3n","isPartOf":{"@id":"https:\/\/aprenderbigdata.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/aprenderbigdata.com\/dataflow\/#primaryimage"},"image":{"@id":"https:\/\/aprenderbigdata.com\/dataflow\/#primaryimage"},"thumbnailUrl":"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow.jpg","datePublished":"2022-12-28T10:53:15+00:00","dateModified":"2025-08-17T09:45:37+00:00","description":"\u27a8 Aprende qu\u00e9 es Dataflow con esta introducci\u00f3n: El servicio que unifica el procesamiento streaming y batch en Google Cloud Platform","breadcrumb":{"@id":"https:\/\/aprenderbigdata.com\/dataflow\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/aprenderbigdata.com\/dataflow\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/aprenderbigdata.com\/dataflow\/#primaryimage","url":"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow.jpg","contentUrl":"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/Dataflow.jpg","width":1280,"height":720,"caption":"Dataflow Google Cloud"},{"@type":"BreadcrumbList","@id":"https:\/\/aprenderbigdata.com\/dataflow\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/aprenderbigdata.com\/"},{"@type":"ListItem","position":2,"name":"Dataflow: Streaming y Batch en Google Cloud"}]},{"@type":"WebSite","@id":"https:\/\/aprenderbigdata.com\/#website","url":"https:\/\/aprenderbigdata.com\/","name":"Aprender BIG DATA","description":"Aprende Big Data desde cero","publisher":{"@id":"https:\/\/aprenderbigdata.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/aprenderbigdata.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/aprenderbigdata.com\/#organization","name":"AprenderBigData","url":"https:\/\/aprenderbigdata.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/aprenderbigdata.com\/#\/schema\/logo\/image\/","url":"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/2019\/08\/cropped-favicon.png","contentUrl":"https:\/\/aprenderbigdata.com\/wp-content\/uploads\/2019\/08\/cropped-favicon.png","width":512,"height":512,"caption":"AprenderBigData"},"image":{"@id":"https:\/\/aprenderbigdata.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/aprenderbigdata.com\/#\/schema\/person\/321e79dd84000e4b71b0dac998d5c707","name":"Oscar Fernandez","description":"Arquitecto de Datos con m\u00e1s de 10 a\u00f1os de experiencia en el sector del Big Data. Autor de cursos de formaci\u00f3n en tecnolog\u00edas Big Data, Cloud y Streaming completados por m\u00e1s de 7000 alumnos en Udemy y otras plataformas. Miembro de la Apache Software Foundation desde 2019.","sameAs":["instagram.com\/oscarfmdc","linkedin.com\/in\/oscarfmdc\/","https:\/\/x.com\/oscarfmdc","https:\/\/www.youtube.com\/channel\/UCBqzJ1QI3jkkIYXLL9gVpWQ"]}]}},"_links":{"self":[{"href":"https:\/\/aprenderbigdata.com\/wp-json\/wp\/v2\/posts\/9411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aprenderbigdata.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aprenderbigdata.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aprenderbigdata.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aprenderbigdata.com\/wp-json\/wp\/v2\/comments?post=9411"}],"version-history":[{"count":1,"href":"https:\/\/aprenderbigdata.com\/wp-json\/wp\/v2\/posts\/9411\/revisions"}],"predecessor-version":[{"id":13343,"href":"https:\/\/aprenderbigdata.com\/wp-json\/wp\/v2\/posts\/9411\/revisions\/13343"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aprenderbigdata.com\/wp-json\/wp\/v2\/media\/9444"}],"wp:attachment":[{"href":"https:\/\/aprenderbigdata.com\/wp-json\/wp\/v2\/media?parent=9411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aprenderbigdata.com\/wp-json\/wp\/v2\/categories?post=9411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aprenderbigdata.com\/wp-json\/wp\/v2\/tags?post=9411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}