For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/data-platform/dpe-jobs-segmentation.md.

Diviser les jobs volumineux grâce à la segmentation

Voir en Markdown

Lors de l'exécution d'une action dans le Data Processing Engine, il est important de réfléchir à la quantité de données qui sera traitée

Objectif

Lors de l'exécution d'une action dans le Data Processing Engine, il est important de réfléchir à la quantité de données qui sera traitée. Pour de gros volumes, il existe un risque d'atteindre la puissance de calcul maximale d'un worker. Pour pouvoir traiter ces actions, vous pouvez diviser l'exécution des actions en un ensemble de tâches plus petites. Cette charge de travail découpée peut alors être répartie entre plusieurs workers simultanément.

Les options de segmentation vous permettent de spécifier comment découper la charge de travail des données. L'exécution sera divisée en plusieurs tâches, chaque tâche gérant un ensemble de valeurs plus restreint à la fois.

Warning

Les options de segmentation doivent être configurées avec attention. Selon vos choix de segmentation, votre action pourrait être bien plus rapide, ou plus lente.

Segmentation des préférences du Data Processing Engine

Plusieurs modes de segmentation sont disponibles au sein de la Platform selon la source de données et le type d'action que vous utilisez :

  1. En fonction du périmètre de dates du workflow
  2. En fonction d'un attribut d'une table du Projet
  3. En fonction d'un ensemble prédéfini
  4. En fonction d'un nombre fixe de lignes
  5. En fonction des comptes de la source
  6. En fonction des fichiers
  7. Segmentation automatique

1. En fonction du périmètre de dates du workflow

Si vos données source contiennent un attribut de date, il est possible de diviser l'action en processus distincts qui traiteront chacun une date spécifique ou un groupe de dates (bucket). Dans ce cas, chaque tâche appliquera un filtre sur la date qu'elle doit extraire.

1. En fonction du périmètre de dates du workflow — Dates nochunk

Compatibilité

Cette option de segmentation est uniquement compatible avec les actions et sources suivantes :

Types d'actionTypes de source
Load; Aggregate; Diff; Delete_Diff; Delete; CustomDatabases: MySQL, PostgreSQL, SQLServer, Impala, Hive, BiqQuery, ElasticSearch, Cassandra, Redshift, Oracle; API: Facebook, Twitter, Google Analytics, YouTube Private, YouTube Public

Bucket Size

Si votre source contient un nombre important de dates, cela peut conduire à générer une multitude de petites tâches et ne pas être particulièrement bénéfique pour le temps d'exécution de votre action. Ceci est particulièrement fréquent lorsqu'il s'agit d'attributs de type datetime pouvant enregistrer des informations temporelles jusqu'à la milliseconde.

Pour éviter de générer trop de tâches, vous pouvez faire en sorte que chaque tâche gère plusieurs dates à la fois en utilisant l'option "bucket size". Définissez simplement une taille pour votre bucket afin de décider combien de dates à la fois vous souhaitez que votre tâche gère. La valeur par défaut du "bucket size" est 1, c'est-à-dire :

  • Si vous ne définissez pas le bucket size, chaque tâche traitera 1 date
  • Si vous définissez le bucket size à 2, chaque tâche traitera 2 dates
  • Si vous définissez le bucket size à 10, chaque tâche traitera 10 dates
  • Et ainsi de suite...

Si vous ne comprenez toujours pas clairement ce que fait le "bucket size", découvrez-en davantage dans la référence sur le bucket size.

Configuration

Pour configurer cette option de segmentation, sélectionnez Based on the date perimeter of the workflow dans le menu déroulant "Segmentation Type", et sélectionnez l'attribut.

Configuration — Based on perimeter dates

Si vous utilisez l'interface en mode expert, vous devrez ajouter les champs suivants à la configuration JSON de votre action :

      "segmentation": {
        "active": true,
        "type": "workflow_dates",
        "var_name": "id2",
        "chunksize": 1
      }

Allez plus loin avec ce type de segmentation grâce à notre série de tutoriels

2. En fonction d'un attribut d'une table du Projet

Cette option vous permet de segmenter une action à l'aide d'une liste de valeurs contenues dans la colonne d'une table donnée (généralement une Reference Table) de votre modèle de données. Par exemple, considérons le cas suivant où nous essayons de définir les options de segmentation pour une action qui charge les données de la Source Table "orders" vers la Destination Table "aggr_date" :

Reference TableSource TableDestination Table
2. En fonction d'un attribut d'une table du Projet — Tmpdate2. En fonction d'un attribut d'une table du Projet — Orders2. En fonction d'un attribut d'une table du Projet — Aggr

En supposant que vous souhaitiez agréger les données "income" selon la date des commandes "date_order". Disons que la table "tmp_date" sert de table de référence pour toutes les dates auxquelles une commande a déjà été passée, par exemple elle contient une liste de dates allant du 2019-01-01 au 2019-01-03.

En activant ce mode de segmentation, un pré-stage sera automatiquement généré en amont de votre stage principal contenant votre action, lequel listera l'ensemble unique des dates disponibles afin de diviser votre action en tâches distinctes, comme décrit dans le schéma ci-dessous :

2. En fonction d'un attribut d'une table du Projet — Workflow

Ce faisant, les données de votre Source Table "orders" seront donc chargées vers la Destination Table "aggr_date" un jour à la fois.

Compatibilité

Cette option de segmentation est uniquement compatible avec les actions et sources suivantes :

Types d'actionTypes de source
Load; Aggregate; Diff; Delete_Diff; Delete; CustomDatabases: MySQL, PostgreSQL, SQLServer, Impala, Hive, BiqQuery, ElasticSearch, Cassandra, Redshift, Oracle

Bucket Size

Si votre source contient un nombre important de valeurs uniques au sein de l'attribut utilisé pour la segmentation, cela peut conduire à générer une multitude de petites tâches et ne pas être particulièrement bénéfique pour le temps d'exécution de votre action.

Pour éviter de générer trop de tâches, vous pouvez faire en sorte que chaque tâche gère plusieurs valeurs de votre attribut de segmentation à la fois en utilisant l'option "bucket size". Définissez simplement une taille pour votre bucket afin de décider combien de valeurs à la fois vous souhaitez que votre tâche gère. Notez que la valeur par défaut du "bucket size" est 1, c'est-à-dire :

  • Si vous ne définissez pas le bucket size, chaque tâche traitera 1 valeur
  • Si vous définissez le bucket size à 2, chaque tâche traitera 2 valeurs
  • Si vous définissez le bucket size à 10, chaque tâche traitera 10 valeurs
  • Et ainsi de suite...

Si vous ne comprenez toujours pas clairement ce que fait le "bucket size", découvrez-en davantage dans la référence sur le bucket size.

Configuration

Pour configurer cette option de segmentation, sélectionnez Based on an attribute of a Project table dans le menu déroulant "Segmentation Type".

Configuration — Based on attribute dataplant

Si vous utilisez l'interface en mode expert, vous devrez ajouter les champs suivants à la configuration JSON de votre action :

      "segmentation": {
        "active": true,
        "type": "dwh_attributes",
        "var_name": "id",
        "attribute": "name",
        "object": "s3.deldiff/delete_diff.csv",
        "attribute_type": "map",
        "chuncksize": 2
      }

Allez plus loin avec ce type de segmentation grâce à notre série de tutoriels

3. En fonction d'un ensemble prédéfini

Utilisez ce mode pour utiliser un ensemble de valeurs codées en dur comme critère de segmentation. Pour cela, vous devez choisir la colonne de la table source sur laquelle la segmentation sera appliquée et saisir manuellement l'ensemble des valeurs. Pour chaque valeur saisie, une tâche sera générée (lorsque le bucket size est défini à 1).

Compatibilité

Cette option de segmentation est uniquement compatible avec les actions et sources suivantes :

Types d'actionTypes de source
Load; Aggregate; Diff; Delete_Diff; Delete; CustomDatabases: MySQL, PostgreSQL, SQLServer, Impala, Hive, BiqQuery, ElasticSearch, Cassandra, Redshift, Oracle

Bucket Size

Si votre source contient un nombre important de valeurs uniques au sein de l'attribut utilisé pour la segmentation, cela peut conduire à générer une multitude de petites tâches et ne pas être particulièrement bénéfique pour le temps d'exécution de votre action.

Pour éviter de générer trop de tâches, vous pouvez faire en sorte que chaque tâche gère plusieurs valeurs de votre attribut de segmentation à la fois en utilisant l'option "bucket size". Définissez simplement une taille pour votre bucket afin de décider combien de valeurs à la fois vous souhaitez que votre tâche gère. Notez que la valeur par défaut du "bucket size" est 1, c'est-à-dire :

  • Si vous ne définissez pas le bucket size, chaque tâche traitera 1 valeur
  • Si vous définissez le bucket size à 2, chaque tâche traitera 2 valeurs
  • Si vous définissez le bucket size à 10, chaque tâche traitera 10 valeurs
  • Et ainsi de suite...

Si vous ne comprenez toujours pas clairement ce que fait le "bucket size", découvrez-en davantage dans la référence sur le bucket size.

Configuration

Pour configurer cette option de segmentation, sélectionnez Based on predefined set dans le menu déroulant "Segmentation Type".

Configuration — Based on a predefined set

Si vous utilisez l'interface en mode expert, vous devrez ajouter les champs suivants à la configuration JSON de votre action :

      "segmentation": {
        "active": true,
        "type": "predefined_set",
        "var_name": "id",
        "chunksize": 1,
        "values": [
          "1"
        ]
      }

Allez plus loin avec ce type de segmentation grâce à notre série de tutoriels

4. En fonction d'un nombre fixe de lignes

Ce mode de segmentation vous permet de diviser le chargement des données d'une source simple en utilisant un nombre fixe de lignes défini par la variable bucket size.

Chaque tâche traitera un nombre spécifique de lignes égal au "bucket size".

  • Si le bucket size est défini à 1000, chaque tâche extraira 1000 lignes.
  • Si le bucket size est défini à 50000, chaque tâche extraira 50000 lignes.
  • Etc …

Compatibilité

Cette option de segmentation est uniquement compatible avec les actions et sources suivantes :

Types d'actionTypes de source
LoadFiles: CSV Files, Excel Files; Datastore: Big Query, AWS S31; Databases: MySQL, PostgreSQL, SQLServer, Impala, Hive, BiqQuery, ElasticSearch, Cassandra, Redshift, Oracle, SQLServer

Configuration

Pour configurer cette option de segmentation, sélectionnez Based on a fix number of lines dans le menu déroulant "Segmentation Type".

Configuration — Based on fixed number of lines

Si vous utilisez l'interface en mode expert, vous devrez ajouter les champs suivants à la configuration JSON de votre action :

      "segmentation": {
        "active": true,
        "type": "lines",
        "chunksize": 1000
      }
Warning

Ce type de segmentation peut être utilisé avec des sources de bases de données telles que SQLServer, PostgreSQL, etc. Cependant, dans ces cas, assurez-vous que le Projet dispose d'un accès à tous les attributs de la table, sinon vos requêtes SELECT pourraient être rejetées pour défaut d'autorisation lors de la tentative de segmentation d'une action.

Allez plus loin avec ce type de segmentation grâce à notre série de tutoriels

5. En fonction des comptes de la source

Pour les sources comme les réseaux sociaux qui sont spécifiques à un compte utilisateur, il est possible de configurer plusieurs comptes pour la même source au sein des Connectors. Vous pouvez ensuite exploiter ces comptes pour diviser une action DPE utilisant cette source en plusieurs tâches, où chaque tâche récupérera les données d'un ou plusieurs comptes.

Compatibilité

Cette option de segmentation est uniquement compatible avec les actions et sources suivantes :

Types d'actionTypes de source
LoadAPI: Facebook, Twitter, Google Analytics, YouTube Private, YouTube Public, LinkedIn

Bucket Size

Si votre source contient un nombre important de comptes, cela peut conduire à générer une multitude de petites tâches et ne pas être particulièrement bénéfique pour le temps d'exécution de votre action.

Pour éviter de générer trop de tâches, vous pouvez faire en sorte que chaque tâche gère plusieurs comptes à la fois en utilisant l'option "bucket size". Définissez simplement une taille pour votre bucket afin de décider combien de comptes à la fois vous souhaitez que votre tâche gère. Notez que la valeur par défaut du "bucket size" est 1, c'est-à-dire :

  • Si vous ne définissez pas le bucket size, chaque tâche traitera 1 compte
  • Si vous définissez le bucket size à 2, chaque tâche traitera 2 comptes
  • Si vous définissez le bucket size à 10, chaque tâche traitera 10 comptes
  • Et ainsi de suite...

Si vous ne comprenez toujours pas clairement ce que fait le "bucket size", découvrez-en davantage dans la référence sur le bucket size.

Configuration

Pour configurer cette option de segmentation, sélectionnez Based on the date perimeter of the workflow dans le menu déroulant "Segmentation Type".

Configuration — Based on the sources accounts

Si vous utilisez l'interface en mode expert, vous devrez ajouter les champs suivants à la configuration JSON de votre action :

      "segmentation": {
        "active": true,
        "type": "accounts",
        "chunksize": 1000
      }

Allez plus loin avec ce type de segmentation grâce à notre série de tutoriels

6. En fonction des fichiers

Pour les sources ayant la même structure dans un dossier source distant, ce mode de segmentation permet au DPE de trouver automatiquement tous les fichiers d'un dossier, puis de créer des tâches avec un nombre spécifique de fichiers. Il remplacera le fichier source dans les actions "load_from.source" pour chaque fichier.

Compatibilité

Cette option de segmentation est uniquement compatible avec les actions et sources suivantes :

Types d'actionTypes de source
LoadS3 (file upload, datastore, AWS, etc..); FTP; SFTP

Bucket Size

Si votre source contient un nombre important de fichiers, cela peut conduire à générer une multitude de petites tâches et ne pas être particulièrement bénéfique pour le temps d'exécution de votre action.

Pour éviter de générer trop de tâches, vous pouvez faire en sorte que chaque tâche gère plusieurs fichiers à la fois en utilisant l'option "bucket size". Définissez simplement une taille pour votre bucket afin de décider combien de comptes à la fois vous souhaitez que votre tâche gère. Notez que la valeur par défaut du "bucket size" est 1, c'est-à-dire :

  • Si vous ne définissez pas le bucket size, chaque tâche traitera 1 fichier
  • Si vous définissez le bucket size à 2, chaque tâche traitera 2 fichiers
  • Si vous définissez le bucket size à 10, chaque tâche traitera 10 fichiers
  • Et ainsi de suite...

Si vous ne comprenez toujours pas clairement ce que fait le "bucket size", découvrez-en davantage dans la référence sur le bucket size.

Configuration

Pour configurer cette option de segmentation, sélectionnez Based on files dans le menu déroulant "Segmentation Type".

Configuration — Based on files

Si vous utilisez l'interface en mode expert, vous devrez ajouter les champs suivants à la configuration JSON de votre action :

      "segmentation": {
        "active": true,
        "type": "files",
        "values": ["a.*"],
        "chunksize": 10
      }

Allez plus loin avec ce type de segmentation grâce à notre série de tutoriels

7. Segmentation automatique

Avec cette option, vous n'avez pas à vous soucier de configurer vos paramètres de segmentation, ils seront configurés automatiquement pour vous. Malheureusement, cette option n'est pas disponible avec toutes les Data Sources ou tous les types d'Action.

Ci-dessous une liste des Data Sources prises en charge pour les Actions prises en charge, ainsi qu'une explication sur le nombre de workers à définir pour les Jobs.

Data Sources prises en charge avec l'action Table to files

  • PostgreSQL : le nombre maximum de workers n'est pas limité.

Data Sources prises en charge avec l'action Load

  • Apache Kafka : maximum d'un worker par partition de topic.
Warning

Notez que vous devez augmenter le nombre d'instances pour que la segmentation automatique prenne effet. Vous pouvez augmenter les instances jusqu'à ce qu'elles atteignent le nombre maximum de workers autorisé. Par exemple, si vous avez 3 partitions dans le topic Kafka de votre action Load, vous pouvez définir jusqu'à 3 workers pour cette action. Si vous définissez moins de 3 instances, par exemple 2, l'un des workers prendra en charge 2 partitions. Cela se configure dans la configuration des ressources et en dimensionnant horizontalement la puissance de calcul vous augmenterez le nombre d'instances.

Retrouvez plus d'informations sur nos options Segmentation et Perimeter pour les actions DPE dans les articles Additional Remarks des paramètres des actions DPE.

Vocabulaire de la segmentation et du périmètre

Aller plus loin

Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.

Posez vos questions, faites-nous part de vos commentaires et interagissez directement avec l’équipe qui développe la Data Platform sur le canal Discord dédié.

Si vous avez besoin d'une assistance concernant vos services OVHcloud, créez une demande depuis notre centre d'aide.

Rejoignez notre communauté d'utilisateurs.

1 : S3 est une marque déposée appartenant à Amazon Technologies, Inc. Les services de OVHcloud ne sont pas sponsorisés, approuvés, ou affiliés de quelque manière que ce soit.

Cette page vous a-t-elle aidé ?