{"id":18274,"date":"2021-04-07T10:34:33","date_gmt":"2021-04-07T08:34:33","guid":{"rendered":"https:\/\/www.hiberus.com\/crecemos-contigo\/?p=18274"},"modified":"2023-12-14T23:01:22","modified_gmt":"2023-12-14T22:01:22","slug":"apache-airflow-python-como-motor-de-orquestacion-de-flujos-de-trabajo","status":"publish","type":"post","link":"https:\/\/www.hiberus.com\/crecemos-contigo\/apache-airflow-python-como-motor-de-orquestacion-de-flujos-de-trabajo\/","title":{"rendered":"Apache Airflow: Python como motor de orquestaci\u00f3n de flujos de trabajo"},"content":{"rendered":"<p>Vivimos en la era del <strong>Big Data<\/strong>, donde la explotaci\u00f3n de todo tipo de datos de las empresas se ha convertido en un objetivo cada vez m\u00e1s importante de cara a conocer mejor sus procesos de negocio y a optimizar sus beneficios.<\/p>\n<p>Por ello, nace la necesidad de herramientas que se encarguen de gestionar todo el flujo de extracci\u00f3n y manipulaci\u00f3n de los datos, adecu\u00e1ndose a unos <strong>patrones<\/strong>, <strong>criterios y necesidades espec\u00edficas<\/strong>.<\/p>\n<p>Una de las herramientas clave en este tipo de trabajos es <strong>Apache Airflow<\/strong>, una plataforma de c\u00f3digo abierto nacida en 2015 con el fin de <strong>crear, planificar y monitorizar flujos de trabajo en lote<\/strong>.<\/p>\n<h2>\u00bfPor qu\u00e9 Apache Airflow?<\/h2>\n<p>Algo que distingue a <strong>Apache Airflow<\/strong> de muchos de sus competidores es que todo el proceso de creaci\u00f3n y planificaci\u00f3n de sus flujos de trabajo se realiza <strong>de manera program\u00e1tica<\/strong> usando <strong>Python<\/strong> como lenguaje de programaci\u00f3n.<\/p>\n<p>Desde hace unos a\u00f1os Python ha ganado un gran prestigio gracias a la potencia y flexibilidad que ofrece, adem\u00e1s de ser un lenguaje de c\u00f3digo abierto y f\u00e1cil de aprender, lo que hace a Apache Airflow una herramienta muy atractiva.<\/p>\n<p>En contraposici\u00f3n con otras tecnolog\u00edas de este tipo, como Apache NiFi, cuya metodolog\u00eda de trabajo consiste en una interfaz con la que puedes crear flujos de trabajo mediante \u201cdrag and drop\u201d donde hay m\u00faltiples elementos que realizan funciones espec\u00edficas, en Apache Airflow esto se hace 100% mediante scripts de c\u00f3digo Python.<\/p>\n<p>Esto les da una libertad y facilidad mucho m\u00e1s amplia a los programadores para crear procesos mucho m\u00e1s personalizados (cuya \u00fanica frontera est\u00e1 en lo que te posibilite programar Python), sin limitarse a las acciones espec\u00edficas que te permita realizar los elementos de la herramienta en cuesti\u00f3n.<\/p>\n<h2>\u00bfC\u00f3mo funciona Apache Airflow?<\/h2>\n<p>Airflow trabaja con DAGs (Directed Aciclic Graph) como metodolog\u00eda para estructurar los procesos por lotes que se van a ejecutar en un flujo de trabajo mediante relaciones y dependencias. Estos grafos deben cumplir dos condiciones:<\/p>\n<ul>\n<li><strong>Ac\u00edclicos<\/strong>: No puede haber bucles, por lo que la ejecuci\u00f3n de un nodo no puede regresar a otro nodo que ya ha sido ejecutado.<\/li>\n<li><strong>Dirigidos<\/strong>: Las relaciones de los nodos son de un \u00fanico sentido.<\/li>\n<\/ul>\n<p>Cada nodo de un DAG consiste en una funci\u00f3n de Python que ejecuta una tarea espec\u00edfica. Adem\u00e1s, existen multitud de elementos que simplifican el c\u00f3digo considerablemente y facilitan a\u00fan m\u00e1s la programaci\u00f3n de cada uno de estos nodos. Estos elementos se pueden clasificar en los siguientes tipos:<\/p>\n<ul>\n<li><strong>Operators<\/strong>: Elementos que realizan una funcionalidad espec\u00edfica, cada nodo constar\u00e1 de un operator espec\u00edfico. Por ejemplo, MySql Operator ejecutar\u00e1 una sentencia SQL, o Bash Operator ejecutar\u00e1 un comando bash.<\/li>\n<li><strong>Hooks<\/strong>: Interfaces que encapsulan las interacciones con una API. Puede entenderse como librer\u00edas propias que contienen funciones que interact\u00faan con una API externa en concreto, y que suelen usarse dentro de los operators. Por ejemplo, Oracle Hook nos facilitar\u00e1 funciones para conectarnos a una base de datos, o para obtener los resultados de una query en concreto.<\/li>\n<li><strong>xCom<\/strong>: Es una herramienta que permite compartir informaci\u00f3n entre nodos. Por defecto, los nodos de un DAG no transmiten informaci\u00f3n de uno a otro, pero en alg\u00fan caso concreto puede ser necesario que un nodo necesite cierta informaci\u00f3n de alguno de sus predecesores, lo que soluciona xCom. Est\u00e1 pensado para transmitir una cantidad de datos peque\u00f1a.<\/li>\n<\/ul>\n<p>Cabe a\u00f1adir que si nos encontramos frente a un caso de uso recurrente para el cu\u00e1l ning\u00fan operator o hook nos soluciona el problema, tenemos la posibilidad de crear los nuestros propios. Por ejemplo, si necesitamos una tarea que recolecte una serie de datos ubicados en HDFS y guardarlos en un contenedor S3, podemos programar nuestro propio operator \u201c<em>HDFStoS3<\/em>\u201d.<\/p>\n<p>En la siguiente imagen podemos ver un ejemplo de un DAG, con cada uno de los elementos que lo componen:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-18275 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Apache-Airflow.png\" alt=\"Apache Airflow\" width=\"567\" height=\"625\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Apache-Airflow.png 567w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Apache-Airflow-272x300.png 272w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Apache-Airflow-360x397.png 360w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/p>\n<h2>Arquitectura de Airflow<\/h2>\n<p>La siguiente imagen resume como es la arquitectura de Apache Airflow, la cual est\u00e1 tambi\u00e9n dise\u00f1ada usando \u00fanicamente Python.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-18276 size-medium\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Airflow\u00b4s-General-Architecture-168x300.png\" alt=\"Airflow\u00b4s General Architecture\" width=\"168\" height=\"300\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Airflow\u00b4s-General-Architecture-168x300.png 168w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Airflow\u00b4s-General-Architecture.png 208w\" sizes=\"auto, (max-width: 168px) 100vw, 168px\" \/><\/p>\n<p>Una <strong>base de datos de metadatos<\/strong> contiene toda la informaci\u00f3n de los workflows, sus estados y sus dependencias. Esto est\u00e1 conectado con el <strong>scheduler<\/strong>, un proceso que en funci\u00f3n de los datos de la base de datos, determina el orden en el que se ejecutara cada tarea y su prioridad. Muy ligado a \u00e9ste tenemos el <strong>executor<\/strong>, que es un proceso de mensajer\u00eda de colas que determinar\u00e1 que nodo ejecutar\u00e1 cada tarea. Es decir, el scheduler determina el orden de las tareas y el executor qui\u00e9n ejecutara cada una. Y por \u00faltimo tenemos los <strong>workers<\/strong>, procesos que ejecutan la l\u00f3gica de una tarea.<\/p>\n<p>Luego por otro lado tenemos un <strong>servidor web<\/strong> que utiliza la informaci\u00f3n de la base de datos y los logs generados por los workers para reflejar toda esta informaci\u00f3n en su <strong>interfaz web<\/strong>.<\/p>\n<p>Uno de los elementos que m\u00e1s va a influir en el rendimiento de un DAG es el executor. Hay multitud de tipos, a continuaci\u00f3n de resumen los 4 m\u00e1s utilizados:<\/p>\n<ul>\n<li><strong>SequentialExecutor<\/strong>: Es el m\u00e1s sencillo, ejecuta las tareas en serie y en local.<\/li>\n<li><strong>LocalExecutor<\/strong>: Muy parecido al anterior, tambi\u00e9n se ejecuta en local, pero \u00e9ste permite paralelizaci\u00f3n.<\/li>\n<li><strong>CeleryExecutor<\/strong>: Permite la ejecuci\u00f3n de tareas distribuidas utilizando Celery, un m\u00f3dulo de Python utilizado para la gesti\u00f3n de tareas as\u00edncronas y distribuidas. Para este executor ya es necesario una configuraci\u00f3n extra, se necesita un sistema de mensajer\u00eda de colas y, adem\u00e1s, tener cada uno de los nodos distribuidos configurado de manera que se puedan ejecutar correctamente las tareas pertinentes.<\/li>\n<li><strong>KubernetesExecutor<\/strong>: Permite la ejecuci\u00f3n de tareas haciendo uso de pods de Kubernetes. En este caso el executor interacciona con la API de Kubernetes, y es esta la que se encarga de desplegar un pod para cada una de las tareas, con las caracter\u00edsticas necesarias, y una vez acabado lo destruye e informa al executor del estado final de la tarea.<\/li>\n<\/ul>\n<h2>Interfaz de Airflow<\/h2>\n<p>Apache Airflow ofrece una interfaz de usuario muy completa donde nos permite <strong>monitorizar<\/strong> todos nuestros DAGs, ver sus <strong>estad\u00edsticas<\/strong> de ejecuci\u00f3n y gestionar algunos elementos como las <strong>conexiones externas<\/strong> (Oracle, HIve, S3) de una manera muy intuitiva. Desde esta interfaz no se pueden crear ni modificar DAGs, est\u00e1 pensada \u00fanicamente para la monitorizaci\u00f3n de \u00e9stos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-18277 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Interfaz-Airflow.png\" alt=\"Interfaz Airflow\" width=\"567\" height=\"338\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Interfaz-Airflow.png 567w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Interfaz-Airflow-300x179.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Interfaz-Airflow-360x215.png 360w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/p>\n<p>Como se puede observar en la imagen, vemos de una manera muy intuitiva como est\u00e1 planificado cada DAG, cuantas veces se ha ejecutado, ha fallado o si est\u00e1 actualmente en ejecuci\u00f3n.<br \/>\nTambi\u00e9n nos permite ver la estructura de cada DAG en particular, y monitorizar el estado de cada nodo, adem\u00e1s de poder revisar los logs de cada instancia de ejecuci\u00f3n en caso de fallo.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-18278 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Interfaz-Airflow-Dags.png\" alt=\"Interfaz Airflow Dags\" width=\"567\" height=\"355\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Interfaz-Airflow-Dags.png 567w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Interfaz-Airflow-Dags-300x188.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2021\/04\/Interfaz-Airflow-Dags-360x225.png 360w\" sizes=\"auto, (max-width: 567px) 100vw, 567px\" \/><\/p>\n<p><strong>Apache Airflow<\/strong> nos permite a los Data Engineers y Data Scientists crear complejos flujos de datos para todo tipo de casos de uso espec\u00edficos (desde integraci\u00f3n de datos en datalakes hasta definici\u00f3n y puesta en producci\u00f3n de pipelines de Machine Learning).<\/p>\n<p>En Hiberus estamos haciendo uso de esta herramienta en proyectos como <strong>INAEM<\/strong> y <strong>Open Data Arag\u00f3n<\/strong>. En el proyecto INAEM se hace uso de Airflow para la descarga y almacenamiento de ofertas laborales de diferentes plataformas y, adem\u00e1s, para el reentrenamiento de modelos de <strong>Machine Learning<\/strong> para clasificar las ofertas de trabajo de manera peri\u00f3dica con nuevos datos.<\/p>\n<p>Por otra parte, en el proyecto de <strong>Open Data Arag\u00f3n<\/strong> se utiliza para la ingesta y extracci\u00f3n de informaci\u00f3n de art\u00edculos de los <strong>boletines oficiales<\/strong> (BOE, BOA, BOPH, BOPZ y BOPT).<\/p>\n<p>En <strong>Hiberus<\/strong> contamos con un \u00e1rea espec\u00edfica de <a href=\"https:\/\/www.hiberus.com\/data-ia\/data-insights\">Data &amp; Analytics<\/a> formada por un equipo de profesionales con amplio expertise en en tecnolog\u00eda, an\u00e1lisis de datos e innovaci\u00f3n. Somos expertos en <strong>Big Data<\/strong>, <strong>Machine Learning<\/strong>, <strong>Business Intelligence 2.0<\/strong>, y <strong>Business Intelligence<\/strong> y <strong>Analytics tradicional<\/strong>.<\/p>\n<p>Descubre todo lo que podemos hacer por ti.<\/p>\n        <div class=\"row\">\n            <div class=\"block-cta-form\" style=\"background-color: #003664;\">\n                <div class=\"content-cta-form\">\n                    <div class=\"text-cta-form\">\n                        <p class=\"title-cta-form\">\u00bfQuieres m\u00e1s informaci\u00f3n sobre nuestros servicios de Data &amp; Analytics?<\/p>\n                        <p>Contacta con nuestro equipo de expertos en Data &amp; Analytics<\/p>\n                    <\/div>\n                    <div class=\"form-fields\">\n                        \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f33973-o1\" lang=\"es-ES\" dir=\"ltr\" data-wpcf7-id=\"33973\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/18274#wpcf7-f33973-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Formulario de contacto\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"33973\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"es_ES\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f33973-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/fieldset>\n<div id=\"responsive-form\" class=\"clearfix\">\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"nombre\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Nombre *\" value=\"\" type=\"text\" name=\"nombre\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"apellido\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Apellido *\" value=\"\" type=\"text\" name=\"apellido\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"correo\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Correo corporativo *\" value=\"\" type=\"email\" name=\"correo\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"telf-contacto\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-tel\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Tel\u00e9fono *\" value=\"\" type=\"tel\" name=\"telf-contacto\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"compania\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Compa\u00f1ia *\" value=\"\" type=\"text\" name=\"compania\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"mensaje\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Mensaje *\" name=\"mensaje\"><\/textarea><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full color-acceptance\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"politica\"><span class=\"wpcf7-form-control wpcf7-acceptance\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"politica\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">He le\u00eddo y acepto la <a href=\"https:\/\/www.hiberus.com\/politica\" target=\"_blank\"><u>Pol\u00edtica de privacidad<\/u><\/a><\/span><\/label><\/span><\/span><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full color-acceptance\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"marketing\"><span class=\"wpcf7-form-control wpcf7-acceptance optional\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"marketing\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">Me gustar\u00eda recibir comunicaciones de marketing de Hiberus y sobre sus productos, servicios y eventos.<\/span><\/label><\/span><\/span><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Contacta con nosotros\" \/>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div id=\"campos_ocultos\" class=\"hidden\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new1\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new1\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new1\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new2\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new2\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new2\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new3\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new3\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new3\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new4\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new4\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new4\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new_p\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new_p\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new_p\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n<!--end responsive-form--><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        \n","protected":false},"excerpt":{"rendered":"<p>Vivimos en la era del Big Data, donde la explotaci\u00f3n de todo tipo de datos de las empresas se ha convertido en&#8230;<\/p>\n","protected":false},"author":216,"featured_media":18299,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_ayudawp_aiss_exclude":false,"footnotes":""},"categories":[7],"tags":[17,29],"class_list":{"0":"post-18274","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-next-tech","8":"tag-big-data","9":"tag-data-analytics"},"acf":[],"_links":{"self":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/18274","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/users\/216"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/comments?post=18274"}],"version-history":[{"count":7,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/18274\/revisions"}],"predecessor-version":[{"id":39138,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/18274\/revisions\/39138"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/media\/18299"}],"wp:attachment":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/media?parent=18274"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/categories?post=18274"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/tags?post=18274"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}