{"id":283,"date":"2022-03-03T17:01:43","date_gmt":"2022-03-03T17:01:43","guid":{"rendered":"https:\/\/rex-data.com\/?p=283"},"modified":"2022-03-03T17:15:04","modified_gmt":"2022-03-03T17:15:04","slug":"architecture-de-apache-spark","status":"publish","type":"post","link":"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/","title":{"rendered":"\ufffcArchitecture de Apache Spark\ufffc"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"283\" class=\"elementor elementor-283\" data-elementor-settings=\"[]\">\n\t\t\t\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6293194 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6293194\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-050b567\" data-id=\"050b567\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d20567f elementor-widget elementor-widget-heading\" data-id=\"d20567f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.5.5 - 03-02-2022 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">Sommaires<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b49fe8f elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"b49fe8f\" data-element_type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.5.5 - 03-02-2022 *\/\n.elementor-widget.elementor-icon-list--layout-inline .elementor-widget-container{overflow:hidden}.elementor-widget .elementor-icon-list-items.elementor-inline-items{margin-right:-8px;margin-left:-8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin-right:8px;margin-left:8px}.elementor-widget .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after{width:auto;left:auto;right:auto;position:relative;height:100%;border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;right:-8px}.elementor-widget .elementor-icon-list-items{list-style-type:none;margin:0;padding:0}.elementor-widget .elementor-icon-list-item{margin:0;padding:0;position:relative}.elementor-widget .elementor-icon-list-item:after{position:absolute;bottom:0;width:100%}.elementor-widget .elementor-icon-list-item,.elementor-widget .elementor-icon-list-item a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:inherit}.elementor-widget .elementor-icon-list-icon+.elementor-icon-list-text{-ms-flex-item-align:center;align-self:center;padding-left:5px}.elementor-widget .elementor-icon-list-icon{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget .elementor-icon-list-icon svg{width:var(--e-icon-list-icon-size,1em);height:var(--e-icon-list-icon-size,1em)}.elementor-widget .elementor-icon-list-icon i{width:1.25em;font-size:var(--e-icon-list-icon-size)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon{text-align:var(--e-icon-list-icon-align)}.elementor-widget.elementor-widget-icon-list .elementor-icon-list-icon svg{margin:var(--e-icon-list-icon-margin,0 calc(var(--e-icon-list-icon-size, 1em) * .25) 0 0)}.elementor-widget.elementor-list-item-link-full_width a{width:100%}.elementor-widget.elementor-align-center .elementor-icon-list-item,.elementor-widget.elementor-align-center .elementor-icon-list-item a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget.elementor-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-align-center .elementor-inline-items{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget.elementor-align-left .elementor-icon-list-item,.elementor-widget.elementor-align-left .elementor-icon-list-item a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.elementor-widget.elementor-align-left .elementor-inline-items{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-widget.elementor-align-right .elementor-icon-list-item,.elementor-widget.elementor-align-right .elementor-icon-list-item a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.elementor-widget.elementor-align-right .elementor-icon-list-items{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-widget:not(.elementor-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-align-left) .elementor-icon-list-item:after{right:0}@media (max-width:1024px){.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item a,.elementor-widget.elementor-tablet-align-center .elementor-icon-list-items{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget.elementor-tablet-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-tablet-align-left .elementor-icon-list-items{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-left .elementor-icon-list-item a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-items{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item,.elementor-widget.elementor-tablet-align-right .elementor-icon-list-item a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.elementor-widget:not(.elementor-tablet-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-tablet-align-left) .elementor-icon-list-item:after{right:0}}@media (max-width:767px){.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item a,.elementor-widget.elementor-mobile-align-center .elementor-icon-list-items{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget.elementor-mobile-align-center .elementor-icon-list-item:after{margin:auto}.elementor-widget.elementor-mobile-align-left .elementor-icon-list-items{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-left .elementor-icon-list-item a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;text-align:left}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-items{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item,.elementor-widget.elementor-mobile-align-right .elementor-icon-list-item a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right}.elementor-widget:not(.elementor-mobile-align-right) .elementor-icon-list-item:after{left:0}.elementor-widget:not(.elementor-mobile-align-left) .elementor-icon-list-item:after{right:0}}<\/style>\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Introduction<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Architecture globale de Spark<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Les principaux composants de l'architecture distribu\u00e9e de Spark.<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Comment une application Spark est divis\u00e9e en jobs, stages et tasks. <\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-circle\"><\/i>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Spark UI<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1601153 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1601153\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8871372\" data-id=\"8871372\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-110dba0 elementor-widget elementor-widget-heading\" data-id=\"110dba0\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Introduction<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1aea93d elementor-widget elementor-widget-text-editor\" data-id=\"1aea93d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.5.5 - 03-02-2022 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#818a91;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#818a91;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>Dans cette article nous allons voir le fonctionnement interne d&rsquo;une application Spark \u00e0 savoir:<\/p><ul><li>Fonctionnement d&rsquo;un cluster Spark<\/li><li><span style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\">La relation entre le driver et les workers nodes<\/span><\/li><li><span style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\">La relation entre les jobs, stages et tasks<\/span><\/li><li><span style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\">Comment une application est divis\u00e9e en jobs, stages et tasks<\/span><\/li><\/ul>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-af62c46 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"af62c46\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-29e0147\" data-id=\"29e0147\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5c42e45 elementor-widget elementor-widget-heading\" data-id=\"5c42e45\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Architecture globale de Spark\u200b<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3142b02 elementor-widget elementor-widget-image\" data-id=\"3142b02\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.5.5 - 03-02-2022 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t\t\t<img width=\"596\" height=\"286\" src=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/cluster-overview.png\" class=\"attachment-large size-large\" alt=\"Cluster Spark\" loading=\"lazy\" srcset=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/cluster-overview.png 596w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/cluster-overview-300x144.png 300w\" sizes=\"(max-width: 596px) 100vw, 596px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1ac8ae2 elementor-widget elementor-widget-text-editor\" data-id=\"1ac8ae2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><b>Driver Program<\/b>: La class main de votre application\u00a0<\/p><p><b>SparkContext<\/b>: \u00a0Le point d&rsquo;entr\u00e9e et de connexion \u00e0 un <b>cluster manager <\/b>d&rsquo;une application Spark. Une fois connect\u00e9, Spark acquiert des ex\u00e9cuteurs sur les n\u0153uds du cluster et y envoie le code de votre application(jar ou fichier python).<\/p><p><b>Worker Node:<\/b><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5); font-size: 1rem;\">\u00a0Un n\u0153ud pouvant ex\u00e9cuter du code de l&rsquo;application dans le cluster.\u00a0<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7a8d02b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7a8d02b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-194d951\" data-id=\"194d951\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f6ed0ef elementor-widget elementor-widget-heading\" data-id=\"f6ed0ef\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Hi\u00e9rarchisation des \u00e9l\u00e9ments d'un cluster Spark<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-476f5ab elementor-widget elementor-widget-text-editor\" data-id=\"476f5ab\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-style: inherit; background-color: var(--ast-global-color-5);\"><span style=\"color: var( --e-global-color-text ); font-style: inherit;\">Pour&nbsp;<\/span><\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-style: inherit; background-color: var(--ast-global-color-5);\">comprendre le fonctionnement d&rsquo;un cluster Spark faisons&nbsp;l&rsquo;analogie avec un magasin de vente des t\u00e9l\u00e9phones.&nbsp;<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-38b7500 elementor-widget elementor-widget-heading\" data-id=\"38b7500\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Comptage des t\u00e9l\u00e9phones <\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d82d33b elementor-widget elementor-widget-text-editor\" data-id=\"d82d33b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\"><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-style: inherit;\">Vous travailler dans un <\/span><span style=\"color: var( --e-global-color-text );\"><i><b>magasin de vente des t\u00e9l\u00e9phones <\/b><\/i><\/span><span style=\"color: var( --e-global-color-text ); font-style: inherit;\">portables. Votre\u00a0<\/span><\/span>travaille ainsi que vos\u00a0<\/span><span style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\">coll\u00e8gues du m\u00eame niveau hi\u00e9rarchique (Man\u0153uvre) consiste \u00e0 faire du comptage des t\u00e9l\u00e9phones dans des cartons entass\u00e9s dans une piece du magasin. \u00a0<\/span><span style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\">\u00a0<\/span><\/p><p><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-style: inherit; background-color: var(--ast-global-color-5);\">Un carton contient des t\u00e9l\u00e9phones de plusieurs marques: iPhone, Huawai et Samsung. <b>Les instructions vous sont\u00a0<\/b><\/span><b>donn\u00e9es par votre manager<\/b>.<\/p><p>Sachant que, p<span style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\">our compter le nombre de t\u00e9l\u00e9phones dans un carton il vous faut <b>30 secondes<\/b>.\u00a0<\/span><\/p><p><b>Q1:<\/b> Combien de temps il vous faudra pour compter 10 cartons ?<\/p><p><b>Q2: <\/b>Combien de man\u0153uvres faut-il pour compter 100 cartons en moins de 6O secondes ?<\/p><p><b>Q3: <\/b>Vous \u00eates 3 combien de temps vous faudra pour compter 60 cartons ?<\/p><p><b>Q4: <\/b>Quels sont les ressources n\u00e9cessaires pour mener \u00e0 bien ce travail ?<\/p><p><b>Les r\u00e9ponses:<\/b><\/p><p><b>Q1:<\/b> Il faut 300 secondes (30 * 10) \u00a0\u00e0 un\u00a0<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\">m<\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">an\u0153uvre<\/span>\u00a0pour compter 10 cartons.<\/p><p><b>Q2:<\/b> Pour compter 100 cartons en moins de 60 secondes il vous faut au moins 50\u00a0<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\">m<\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">an\u0153uvres:<\/span>\u00a0 en 60 secondes une\u00a0<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\">m<\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">an\u0153uvre<\/span>\u00a0compte 2 cartons et 100\/2 = 50<\/p><p><b>Q3:<\/b> Il faudra 600 secondes( 60\/3 * 30) \u00a0a 3\u00a0<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\">m<\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">an\u0153uvres<\/span>\u00a0pour compter 60 cartons.<\/p><p><b>Q4:<\/b> Les ressources n\u00e9cessaires: Le manager, les m<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5); font-size: 1rem;\">an\u0153uvres, des espaces pour compter, la piece contenant les cartons et les cartons.<\/span><\/p><h3><b>Correspondances avec un cluster Spark<\/b><\/h3><p>Le manager,\u00a0<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\">m<\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">an\u0153uvres et leurs ressources =&gt; <b>Cluster<\/b><\/span><\/p><p><b>Le manager\u00a0<\/b><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\">dont le r\u00f4le est de\u00a0donner des instructions aux m<\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">an\u0153uvres\u00a0<\/span><b style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif;\">=&gt; Driver<\/b><\/p><p>Un groupe des\u00a0<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\"><b>m<\/b><\/span><span style=\"background-color: var(--ast-global-color-5);\"><b style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\">an\u0153uvres<\/b><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\"> dans un <\/span><\/span><b style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\">espace<\/b><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\"> de\u00a0<\/span><\/span>travail<span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\">\u00a0=&gt; <\/span><\/span><b style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\">Executor<\/b><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\">\u00a0<\/span><\/span><\/span><\/p><p><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\">Un m<\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">an\u0153uvre =&gt; <b>Thread <\/b>ou<b> Slot <\/b>ou<b> Core<\/b><\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\"><br \/><\/span><\/p><p><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">Un carton =&gt; <b>partition<\/b><\/span><\/p><p><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">Dataset =&gt; Piece contenant les cartons<\/span><\/p><p><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">Ordre de compter les t\u00e9l\u00e9phones =&gt; <b>Job<\/b><\/span><\/p><p>Une instruction \u00e0 un\u00a0<span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem;\">m<\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">an\u0153uvre de traiter un carton =&gt; <b>Task<\/b><\/span><\/p><p><span style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\">Vous l&rsquo;avez donc compris pour diminuer le temps de traitement d&rsquo;un nombre important de cartons nous avons besoin d&rsquo;augmenter le nombre de\u00a0<\/span><span style=\"font-size: 1rem; font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif;\">m<\/span><span style=\"font-size: 1rem; font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\">an\u0153uvres.\u00a0<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c13b496 elementor-widget elementor-widget-heading\" data-id=\"c13b496\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Hi\u00e9rarchie des \u00e9l\u00e9ments d'un cluster Spark. <\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ecca2e1 elementor-widget elementor-widget-text-editor\" data-id=\"ecca2e1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p style=\"font-size: 15px; font-style: normal;\"><span style=\"background-color: var(--ast-global-color-5);\"><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\">Le traitement d&rsquo;un Dataset au sein d&rsquo;un cluster Spark est effectu\u00e9 de la\u00a0<\/span><\/span>mani\u00e8re<span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\">\u00a0suivante:\u00a0<\/span><\/span><\/span><\/p><p style=\"font-size: 15px; font-style: normal;\"><span style=\"background-color: var(--ast-global-color-5);\"><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\">Le Dataset est\u00a0<\/span><\/span><\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; background-color: var(--ast-global-color-5);\">divis\u00e9\u00a0<\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-style: inherit; background-color: var(--ast-global-color-5);\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\">en\u00a0<\/span><\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-style: inherit; background-color: var(--ast-global-color-5);\">plusieurs partitions. Une partition est un\u00a0ensemble des donn\u00e9es trait\u00e9es ensemble par un Thread associ\u00e9 \u00e0 un task.\u00a0<\/span><\/p><p style=\"font-size: 15px; font-style: normal;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem; font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5); font-style: inherit;\"><b>Job<\/b> =&gt; <b>Stages<\/b> = &gt; <b>tasks<\/b>\u00a0<\/span><\/p><p><span style=\"font-size: 15px; font-style: normal; background-color: var(--ast-global-color-5);\"><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\"><span style=\"font-weight: bold;\">Le Job:<\/span>\u00a0constitue l&rsquo;action \u00e0 effectuer: compter les\u00a0<\/span><\/span>iPhones dans une pi\u00e8ce.\u00a0<\/span><span style=\"background-color: var(--ast-global-color-5);\"><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\">\u00a0Le <\/span><\/span><b style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; font-style: normal;\">Job<\/b><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\"> est divis\u00e9 en petits ensembles de <b>tasks<\/b> appel\u00e9es <\/span><\/span><b style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; font-size: 1rem; font-style: normal;\">Stage<\/b><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\"> qui d\u00e9pendent les unes des autres<\/span><\/span><b><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\">\u00a0<\/span><\/span><\/b><\/span><span style=\"background-color: var(--ast-global-color-5);\"><span style=\"font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\">(A cause du \u00a0<\/span><\/span><\/span><span style=\"font-weight: bold; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5); font-size: 1rem;\">shuffle <\/span><span style=\"color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5); font-size: 1rem;\">que<\/span><span style=\"font-weight: bold; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5); font-size: 1rem;\">\u00a0<\/span><span style=\"background-color: var(--ast-global-color-5); font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\">nous allons voir dans un\u00a0<\/span><\/span><span style=\"background-color: var(--ast-global-color-5); font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif;\">prochain<\/span><span style=\"background-color: var(--ast-global-color-5); font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif;\"><span style=\"color: var( --e-global-color-text ); font-size: 1rem;\">\u00a0chapitre).<\/span><\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9fce4e2 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9fce4e2\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-807e371\" data-id=\"807e371\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e1afef2 elementor-widget elementor-widget-heading\" data-id=\"e1afef2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Etudions un bout de code<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8989e48 elementor-widget elementor-widget-text-editor\" data-id=\"8989e48\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p style=\"orphans: 2; widows: 2;\">Le fichier people.txt dans votre r\u00e9pertoire Spark (r\u00e9pertoire o\u00f9 Spark est install\u00e9) contient le nom et l&rsquo;age de 3 personnes<span style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\">:\u00a0<\/span><\/p><pre style=\"font-style: normal; background-color: #2b2b2b; color: #a9b7c6; font-family: 'JetBrains Mono', monospace;\">head examples\/src\/main\/resources\/people.txt<br \/>Michael, <span style=\"color: #6897bb;\">29<br \/><\/span>Andy, <span style=\"color: #6897bb;\">30<br \/><\/span>Justin, <span style=\"color: #6897bb;\">19<\/span><\/pre><pre style=\"font-style: normal; background-color: #2b2b2b; color: #a9b7c6; font-family: 'JetBrains Mono', monospace;\">val peopleRDD = spark.sparkContext.textFile(<span style=\"color: #6a8759;\">\"examples\/src\/main\/resources\/people.txt\"<\/span>)<\/pre><pre style=\"font-style: normal; background-color: #2b2b2b; color: #a9b7c6; font-family: 'JetBrains Mono', monospace;\">peopleRDD.map(_.split(<span style=\"color: #6a8759;\">\",\"<\/span>)).map(p =&gt; p(<span style=\"color: #6897bb;\">1<\/span>).trim.toInt).reduce((age1,age2) =&gt; age1 + age2)<br \/><span style=\"font-size: 1em;\">res33: Int = <\/span><span style=\"font-size: 1em; color: #6897bb;\">78<\/span><\/pre><p>Ce bout de code calcul la somme des \u00e2ges des 3 personnes.\u00a0<\/p><p>Regardons \u00e0 pr\u00e9sent l&rsquo;interface\u00a0<b>Spark UI.<\/b><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d95aea8 elementor-widget elementor-widget-image\" data-id=\"d95aea8\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img width=\"1024\" height=\"522\" src=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job-1024x522.png\" class=\"attachment-large size-large\" alt=\"SparkuiJobs\" loading=\"lazy\" srcset=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job-1024x522.png 1024w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job-300x153.png 300w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job-768x392.png 768w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job-1536x783.png 1536w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job-2048x1044.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7588c26 elementor-widget elementor-widget-text-editor\" data-id=\"7588c26\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Un <b>job<\/b>\u00a0a \u00e9t\u00e9 lanc\u00e9 dans le cluster.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2185db3 elementor-widget elementor-widget-image\" data-id=\"2185db3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img width=\"1024\" height=\"522\" src=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage-1024x522.png\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage-1024x522.png 1024w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage-300x153.png 300w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage-768x392.png 768w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage-1536x783.png 1536w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage-2048x1044.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b6983c8 elementor-widget elementor-widget-text-editor\" data-id=\"b6983c8\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Le <b>Job<\/b> a un <b>Stage<\/b><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-75d62d4 elementor-widget elementor-widget-image\" data-id=\"75d62d4\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img width=\"1024\" height=\"522\" src=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks-1024x522.png\" class=\"attachment-large size-large\" alt=\"Spark ui Spark task\" loading=\"lazy\" srcset=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks-1024x522.png 1024w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks-300x153.png 300w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks-768x392.png 768w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks-1536x783.png 1536w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks-2048x1044.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ae7f4c1 elementor-widget elementor-widget-text-editor\" data-id=\"ae7f4c1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Le <b>Stage<\/b>\u00a0a 2 <b>Tasks<\/b><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e99f22e elementor-widget elementor-widget-text-editor\" data-id=\"e99f22e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Maintenant ex\u00e9cutons le bout de code suivant.\u00a0<\/p><pre style=\"font-style: normal; background-color: #2b2b2b; color: #a9b7c6; font-family: 'JetBrains Mono', monospace;\">peopleRDD.map(_.split(<span style=\"color: #6a8759;\">\",\"<\/span>)).map(p =&gt; p(<span style=\"color: #6897bb;\">1<\/span>).trim.toInt).groupBy(x =&gt; x % <span style=\"color: #6897bb;\">2<\/span>).collect()<\/pre><p>La sortie<\/p><pre style=\"font-size: 15px; font-style: normal; background-color: #2b2b2b; font-family: 'JetBrains Mono', monospace; color: #a9b7c6;\">res1: Array[(Int, Iterable[Int])] = Array((<span style=\"color: #6897bb;\">0<\/span>,CompactBuffer(<span style=\"color: #6897bb;\">30<\/span>)), (<span style=\"color: #6897bb;\">1<\/span>,CompactBuffer(<span style=\"color: #6897bb;\">29<\/span>, <span style=\"color: #6897bb;\">19<\/span>)))<\/pre><p>Le code groupe les personnes dans 2 listes: &lsquo;\u00e2ge pair et impair.<span style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\">\u00a0<\/span><\/p><p><span style=\"font-style: inherit; color: var( --e-global-color-text ); font-family: var( --e-global-typography-text-font-family ), Sans-serif; background-color: var(--ast-global-color-5);\">Nous avons le Spark UI suivant<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cc760a3 elementor-widget elementor-widget-image\" data-id=\"cc760a3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img width=\"1024\" height=\"523\" src=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job2-1024x523.png\" class=\"attachment-large size-large\" alt=\"Spar ui job\" loading=\"lazy\" srcset=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job2-1024x523.png 1024w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job2-300x153.png 300w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job2-768x392.png 768w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job2-1536x784.png 1536w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/job2-2048x1046.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0f2f82e elementor-widget elementor-widget-image\" data-id=\"0f2f82e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img width=\"1024\" height=\"523\" src=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage2-1024x523.png\" class=\"attachment-large size-large\" alt=\"stage\" loading=\"lazy\" srcset=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage2-1024x523.png 1024w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage2-300x153.png 300w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage2-768x392.png 768w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage2-1536x784.png 1536w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/stage2-2048x1046.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eb7358d elementor-widget elementor-widget-text-editor\" data-id=\"eb7358d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Cette op\u00e9ration a engendr\u00e9 2 <b>Stages. <\/b>On remarque\u00a0\u00e9galement qu&rsquo;il y&rsquo;a eu du Shuffle.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f5cc685 elementor-widget elementor-widget-image\" data-id=\"f5cc685\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img width=\"1024\" height=\"523\" src=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks2-1024x523.png\" class=\"attachment-large size-large\" alt=\"task\" loading=\"lazy\" srcset=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks2-1024x523.png 1024w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks2-300x153.png 300w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks2-768x392.png 768w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks2-1536x784.png 1536w, https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/tasks2-2048x1046.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6c61f93 elementor-widget elementor-widget-text-editor\" data-id=\"6c61f93\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Le <b>Stage 1<\/b> a 2 <b>Tasks<\/b><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-88b8e56 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"88b8e56\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4d67825\" data-id=\"4d67825\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8d6f8e8 elementor-widget elementor-widget-heading\" data-id=\"8d6f8e8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Vid\u00e9o <\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4a02e83 elementor-aspect-ratio-169 elementor-widget elementor-widget-video\" data-id=\"4a02e83\" data-element_type=\"widget\" data-settings=\"{&quot;youtube_url&quot;:&quot;https:\\\/\\\/youtu.be\\\/CYJJopH5VrI&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;,&quot;aspect_ratio&quot;:&quot;169&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.5.5 - 03-02-2022 *\/\n.elementor-widget-video .elementor-widget-container{overflow:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.elementor-widget-video .elementor-open-inline .elementor-custom-embed-image-overlay{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-background-size:cover;background-size:cover;background-position:50%}.elementor-widget-video .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center}.elementor-widget-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play i{opacity:1}.elementor-widget-video .elementor-custom-embed-image-overlay img{display:block;width:100%}.elementor-widget-video .e-hosted-video .elementor-video{-o-object-fit:cover;object-fit:cover}<\/style>\t\t<div class=\"elementor-wrapper elementor-fit-aspect-ratio elementor-open-inline\">\n\t\t\t<div class=\"elementor-video\"><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Sommaires Introduction Architecture globale de Spark Les principaux composants de l&rsquo;architecture distribu\u00e9e de Spark. Comment une application Spark est divis\u00e9e en jobs, stages et tasks. Spark UI Introduction Dans cette article nous allons voir le fonctionnement interne d&rsquo;une application Spark \u00e0 savoir: Fonctionnement d&rsquo;un cluster Spark La relation entre le driver et les workers nodes &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/\"> <span class=\"screen-reader-text\">\ufffcArchitecture de Apache Spark\ufffc<\/span> Lire la suite\u00a0\u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":""},"categories":[4],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\ufffcArchitecture de Apache Spark\ufffc - REX Data<\/title>\n<meta name=\"description\" content=\"Dans cette article nous allons voir le fonctionnement interne d&#039;une application Spark \u00e0 savoir:Fonctionnement d&#039;un cluster SparkLa relation entre le driver et les workers nodesLa relation entre les jobs, stages et tasksComment une application est divis\u00e9e en jobs, stages et tasks.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ufffcArchitecture de Apache Spark\ufffc - REX Data\" \/>\n<meta property=\"og:description\" content=\"Dans cette article nous allons voir le fonctionnement interne d&#039;une application Spark \u00e0 savoir:Fonctionnement d&#039;un cluster SparkLa relation entre le driver et les workers nodesLa relation entre les jobs, stages et tasksComment une application est divis\u00e9e en jobs, stages et tasks.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/\" \/>\n<meta property=\"og:site_name\" content=\"REX Data\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-03T17:01:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-03T17:15:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/cluster-overview.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/rex-data.com\/#website\",\"url\":\"https:\/\/rex-data.com\/\",\"name\":\"REX Data\",\"description\":\"Apprendre avec les professionnels de la Data\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/rex-data.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/#primaryimage\",\"inLanguage\":\"fr-FR\",\"url\":\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/cluster-overview.png\",\"contentUrl\":\"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/cluster-overview.png\",\"width\":596,\"height\":286,\"caption\":\"Cluster Spark\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/#webpage\",\"url\":\"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/\",\"name\":\"\ufffcArchitecture de Apache Spark\ufffc - REX Data\",\"isPartOf\":{\"@id\":\"https:\/\/rex-data.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/#primaryimage\"},\"datePublished\":\"2022-03-03T17:01:43+00:00\",\"dateModified\":\"2022-03-03T17:15:04+00:00\",\"author\":{\"@id\":\"https:\/\/rex-data.com\/#\/schema\/person\/f2f92a8949e201c26c7284f5fdd9762e\"},\"description\":\"Dans cette article nous allons voir le fonctionnement interne d'une application Spark \u00e0 savoir:Fonctionnement d'un cluster SparkLa relation entre le driver et les workers nodesLa relation entre les jobs, stages et tasksComment une application est divis\u00e9e en jobs, stages et tasks.\",\"breadcrumb\":{\"@id\":\"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/rex-data.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ufffcArchitecture de Apache Spark\ufffc\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/rex-data.com\/#\/schema\/person\/f2f92a8949e201c26c7284f5fdd9762e\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/rex-data.com\/#personlogo\",\"inLanguage\":\"fr-FR\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/06b6cb5b6d7fe93583b7c1db9b128a2b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/06b6cb5b6d7fe93583b7c1db9b128a2b?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/rex-data.com\"],\"url\":\"https:\/\/rex-data.com\/index.php\/author\/rex-data\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\ufffcArchitecture de Apache Spark\ufffc - REX Data","description":"Dans cette article nous allons voir le fonctionnement interne d'une application Spark \u00e0 savoir:Fonctionnement d'un cluster SparkLa relation entre le driver et les workers nodesLa relation entre les jobs, stages et tasksComment une application est divis\u00e9e en jobs, stages et tasks.","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:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/","og_locale":"fr_FR","og_type":"article","og_title":"\ufffcArchitecture de Apache Spark\ufffc - REX Data","og_description":"Dans cette article nous allons voir le fonctionnement interne d'une application Spark \u00e0 savoir:Fonctionnement d'un cluster SparkLa relation entre le driver et les workers nodesLa relation entre les jobs, stages et tasksComment une application est divis\u00e9e en jobs, stages et tasks.","og_url":"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/","og_site_name":"REX Data","article_published_time":"2022-03-03T17:01:43+00:00","article_modified_time":"2022-03-03T17:15:04+00:00","og_image":[{"url":"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/cluster-overview.png"}],"twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"admin","Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/rex-data.com\/#website","url":"https:\/\/rex-data.com\/","name":"REX Data","description":"Apprendre avec les professionnels de la Data","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rex-data.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"ImageObject","@id":"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/#primaryimage","inLanguage":"fr-FR","url":"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/cluster-overview.png","contentUrl":"https:\/\/rex-data.com\/wp-content\/uploads\/2022\/02\/cluster-overview.png","width":596,"height":286,"caption":"Cluster Spark"},{"@type":"WebPage","@id":"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/#webpage","url":"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/","name":"\ufffcArchitecture de Apache Spark\ufffc - REX Data","isPartOf":{"@id":"https:\/\/rex-data.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/#primaryimage"},"datePublished":"2022-03-03T17:01:43+00:00","dateModified":"2022-03-03T17:15:04+00:00","author":{"@id":"https:\/\/rex-data.com\/#\/schema\/person\/f2f92a8949e201c26c7284f5fdd9762e"},"description":"Dans cette article nous allons voir le fonctionnement interne d'une application Spark \u00e0 savoir:Fonctionnement d'un cluster SparkLa relation entre le driver et les workers nodesLa relation entre les jobs, stages et tasksComment une application est divis\u00e9e en jobs, stages et tasks.","breadcrumb":{"@id":"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/rex-data.com\/index.php\/2022\/03\/03\/architecture-de-apache-spark\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rex-data.com\/"},{"@type":"ListItem","position":2,"name":"\ufffcArchitecture de Apache Spark\ufffc"}]},{"@type":"Person","@id":"https:\/\/rex-data.com\/#\/schema\/person\/f2f92a8949e201c26c7284f5fdd9762e","name":"admin","image":{"@type":"ImageObject","@id":"https:\/\/rex-data.com\/#personlogo","inLanguage":"fr-FR","url":"https:\/\/secure.gravatar.com\/avatar\/06b6cb5b6d7fe93583b7c1db9b128a2b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/06b6cb5b6d7fe93583b7c1db9b128a2b?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/rex-data.com"],"url":"https:\/\/rex-data.com\/index.php\/author\/rex-data\/"}]}},"_links":{"self":[{"href":"https:\/\/rex-data.com\/index.php\/wp-json\/wp\/v2\/posts\/283"}],"collection":[{"href":"https:\/\/rex-data.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rex-data.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rex-data.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rex-data.com\/index.php\/wp-json\/wp\/v2\/comments?post=283"}],"version-history":[{"count":27,"href":"https:\/\/rex-data.com\/index.php\/wp-json\/wp\/v2\/posts\/283\/revisions"}],"predecessor-version":[{"id":321,"href":"https:\/\/rex-data.com\/index.php\/wp-json\/wp\/v2\/posts\/283\/revisions\/321"}],"wp:attachment":[{"href":"https:\/\/rex-data.com\/index.php\/wp-json\/wp\/v2\/media?parent=283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rex-data.com\/index.php\/wp-json\/wp\/v2\/categories?post=283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rex-data.com\/index.php\/wp-json\/wp\/v2\/tags?post=283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}