MaxCompute, anciennement nommé Open Data Processing Service (ODPS), est une plateforme de calcul ouvert. Si vos données sont générées sur la plateforme MaxCompute, vous pouvez les configurer comme source de données dans votre application OpenSearch. Lorsque vous déclenchez une tâche de réindexation de l'application, le système récupère automatiquement l'intégralité des données depuis les tables MaxCompute spécifiées. Vous devez pousser les données incrémentielles ultérieures via des appels SDK ou API.
Configurer un AccessKey
Après avoir configuré une source de données MaxCompute dans OpenSearch, celui-ci utilise l'AccessKey et l'AccessKey Secret fournis pour télécharger les données depuis les tables MaxCompute. Par conséquent, avant de configurer la source de données, vous devez disposer d'un AccessKey et d'un AccessKey Secret.
Votre projet MaxCompute et votre application OpenSearch doivent appartenir au même compte Alibaba Cloud.
Vous pouvez utiliser la paire AccessKey de votre compte Alibaba Cloud pour accéder aux tables du projet MaxCompute appartenant à ce même compte.
Pour renforcer la sécurité, nous vous recommandons d'utiliser plutôt un utilisateur RAM. Suivez les étapes ci-dessous.
Créez un utilisateur RAM sous votre compte Alibaba Cloud. Pour plus d'informations, consultez Create a RAM user.
Ajoutez l'utilisateur RAM en tant que membre dans MaxCompute.
Dans votre espace de travail DataWorks, sélectionnez Member Management dans le volet de navigation de gauche. Sur la page de gestion des membres, cliquez sur Add Member dans le coin supérieur droit. Pour afficher les autorisations de chaque rôle, cliquez sur View Role Permissions.
Les rôles disponibles incluent : Workspace Administrator, Developer, O&M, Deployer, Visitor, Security Administrator et Model Designer. Dans la boîte de dialogue Add Member, déplacez l'utilisateur RAM de la liste Accounts to Add vers la liste Added Accounts. Dans la zone Batch Set Roles, sélectionnez les rôles requis et cliquez sur OK.
Après avoir ajouté le membre, exécutez la commande
list users;sur la page de développement des données MaxCompute pour afficher son nom de compte :
OK
OK
OK
OK
OK
OK
OK
OK
A xxx xxx xxx xxx
RAM$op xxx h_test@test.xxx xxx xxx st_1
2022-02-10 18:34:33 INFO xxx======================================================
2022-02-10 18:34:33 INFO Exit code of the Shell command 0
2022-02-10 18:34:33 INFO -- Invocation of Shell command completed ---
Copiez le nom complet du compte, puis accordez des autorisations à ce compte. Dans les commandes suivantes, remplacez xxx par le nom de compte copié.
-- 1. Grant the CreateInstance and List permissions on the project.
grant CreateInstance,List on project zy_ts_test to user xxx;
-- 2. Grant the SELECT, DESCRIBE, and DOWNLOAD permissions on the table.
GRANT select,describe,download ON TABLE people_info TO USER xxx;
-- 3. (Optional) Grant the label permission on the ODPS table.
set label 2 to USER xxx;
-- Query the permissions and assigned roles for a specified user.
show grants for xxx;
Une fois les autorisations accordées, configurez la source de données MaxCompute dans OpenSearch.
Configurer la source de données
Dans la console OpenSearch, sélectionnez Use Data Source pour démarrer la création de l'application.
Cliquez sur Connect to Database pour configurer vos informations MaxCompute (anciennement ODPS). Saisissez le nom du projet, ainsi que l'AccessKey et l'AccessKey Secret du compte autorisé :
Dans la liste des types de sources de données, sélectionnez MaxCompute. Sur la page de sélection des tables, déplacez la table people_info de la liste des tables située à gauche vers la liste de sélection située à droite.
Une fois cette étape terminée, le système mappe automatiquement les champs de la table. Ajustez les mappages selon vos besoins métier. Lorsque vous avez terminé, cliquez sur Next.
Lors de la configuration du schéma de l'application, OpenSearch exige que vous spécifiiez une table principale et un champ de clé primaire unique pour chaque table.
Configurez le schéma d'index. Sélectionnez un analyseur approprié en fonction de vos besoins de recherche. Pour plus d'informations, consultez Index schema. Une fois terminé, cliquez sur Next :
La page de configuration du schéma d'index comporte trois sections : Index Fields (définissez le nom de l'index, les champs inclus et la méthode d'analyse, telle que Chinese - General Analysis ou Keyword), Attribute Fields (utilisés pour le filtrage, l'agrégation, le tri et les opérations distinctes avec les clauses filter, aggregate, sort et distinct) et Default Display Fields (configurez les champs à afficher dans les résultats de recherche).
Configurer la source de données : Cette étape comprend la configuration des mappages de champs, la sélection des informations de partition et le choix d'un mécanisme de contrôle de concurrence pour la synchronisation des données.
5,1. Configurer les mappages de champs : Cliquez sur Edit dans la colonne Action. OpenSearch propose plusieurs plug-ins de source de données pour les données MaxCompute (anciennement ODPS). Pour utiliser un plug-in, cliquez sur le signe plus (+) dans la colonne Content Conversion lors de la configuration des mappages de champs. Le plug-in transforme le champ source avant sa synchronisation vers OpenSearch. Si un plug-in échoue en raison d'une erreur de configuration ou de connexion, le champ source est synchronisé sans conversion.
Configurez le plug-in : Dans la boîte de dialogue Plugin and Parameter Settings, choisissez parmi les quatre plug-ins de conversion de contenu situés à gauche : HTMLTagRemover, JsonKeyValueExtractor, KeyValueExtractor et StringCatenateExtractor. Après avoir sélectionné un plug-in, configurez ses paramètres à droite et cliquez sur Save.
Pour le type DATETIME dans les tables ODPS, le système convertit automatiquement les valeurs en millisecondes. Définissez le type de champ OpenSearch correspondant sur INT.
Les types de champs MaxCompute (anciennement ODPS) suivants sont pris en charge : Bigint, Double, Boolean, Datetime, String et Decimal.
L'interface de mappage des champs affiche les relations source-cible dans un tableau. Chaque ligne inclut le nom du champ source, le nom du champ cible et la colonne Content Conversion. Vous pouvez cliquer sur le bouton « + » dans la colonne Content Conversion pour ajouter un plug-in, et utiliser le bouton Edit dans la colonne Action pour modifier la configuration du mappage.
5,2. Spécifier les partitions : OpenSearch vous permet de spécifier les partitions à importer depuis vos données MaxCompute (anciennement ODPS) selon vos besoins. Vous pouvez utiliser des expressions régulières pour sélectionner les partitions, par exemple pour importer les données de la veille. En combinant cette fonctionnalité avec la fonction de réindexation planifiée, vous importez automatiquement de nouvelles partitions de données chaque jour.
Expression régulière : Le signe égal (=), la virgule (,), le point-virgule (;) et la double barre verticale (||) sont des caractères réservés. Par exemple, pour importer automatiquement l'intégralité des données de la partition de la veille, utilisez ds=%Y%m%d || -1 days.
Après configuration, la liste des sources de données affiche l'enregistrement de la table ODPS ajouté, incluant des champs tels que Project Name (exemple : search_offline_dev), Table Name (exemple : agg_pv_log_test), Partition Import Condition et Data Time. Vous pouvez Delete une source de données configurée depuis la colonne Action.
ds est le nom du champ de partition. N'ajoutez pas d'espaces ni d'autres caractères invisibles de part et d'autre du signe égal (=).
Les exemples suivants illustrent l'utilisation des conditions de partition MaxCompute (anciennement ODPS) dans différents scénarios :
Plusieurs règles de filtrage de partition sont prises en charge. Séparez les différentes règles par un point-virgule (;). Par exemple,
pt=1;pt=2correspond à toutes les partitions où le champ de partitionptest1ou2.Une règle de filtrage peut spécifier des valeurs pour plusieurs champs de partition. Séparez les différents champs par une virgule (,). Par exemple,
pt1=1,pt2=2,pt3=3correspond à toutes les partitions qui satisfont simultanémentpt1=1,pt2=2etpt3=3. Remarque : La fonction de temps, telle que%Y%m%d || -1 days, n'est pas prise en charge pour plusieurs partitions.

Exemple : (La figure ci-dessus montre une table ODPS ayant une sous-partition ds sous la partition pt)
Plusieurs partitions : **
pt=1;pt=2synchronise toutes les données des partitionspt=1etpt=2.**Spécifier des valeurs pour plusieurs champs de partition : **
pt=1,ds=1synchronise les données de la partition oùpt=1etds=1.**Cas non pris en charge : **Les cas tels que
pt=1,ds=%Y%m%d || -1 daysoupt=1;pt=%Y%m%d || -1 daysne sont actuellement pas pris en charge.**La valeur d'un champ de partition prend en charge le caractère générique (*), ce qui signifie que le champ peut avoir n'importe quelle valeur. Dans ce cas, vous pouvez omettre le champ de la règle de filtrage.
La valeur d'un champ de partition prend en charge les expressions régulières. Par exemple,
pt=[0-9]*correspond à toutes les partitions où la valeur deptest un nombre.La valeur d'un champ de partition prend en charge la correspondance temporelle. La règle est :
pt=<valeur de la colonne de partition avec heure formatée>||<expression d'intervalle de temps>. Par exemple,ds=%Y%m%d || -1 dayssignifie que le champ de partition estds, le format est20150510et vous devez accéder aux données d'il y a un jour.5,1 Les paramètres de temps formaté prennent en charge les spécificateurs de format de temps standard, comme indiqué dans le tableau ci-dessous.
5,2 L'expression d'intervalle de temps prend en charge
+/- n week|weeks|day|days|hour|hours|minute|minutes|second|seconds|microsecond|microseconds. Le signe plus (+) indique une heure postérieure de n unités à l'heure de création de la tâche, et le signe moins (-) indique une heure antérieure de n unités à l'heure de création de la tâche.5,3 Par défaut, le système applique un décalage
+0 daysà toutes les règles de filtrage. Par conséquent, notez que les valeurs de champ utilisées pour le filtrage ne peuvent pas contenir de chaînes correspondant aux spécificateurs de format de temps. Par exemple, pour une tâche créée un mercredi,pt=%abccorrespond aux partitions où la valeur deptestWedbc, et non%abc.
Le tableau suivant décrit tous les paramètres d'expression régulière disponibles et leur signification :
%d: Day of the month ([01-31])
%H: Hour in 24-hour format ([00, 23])
%m: Month ([01, 12])
%M: Minute ([00, 59])
%S: Second ([00, 61])
%y: Year as a 2-digit number
%Y: Year as a 4-digit number
5,3. Choisir un mécanisme de contrôle de concurrence pour la synchronisation des données :
Lorsque vous sélectionnez Use DONE file, vous pouvez contrôler le moment des extractions complètes de données en téléchargeant un fichier DONE. Cela garantit l'intégrité des données complètes. Avant d'extraire les données complètes de MaxCompute (anciennement ODPS), le système vérifie la présence d'un fichier DONE pour la journée en cours. Si le fichier n'existe pas, le système attend. Le délai d'attente par défaut est d'une heure.
Téléchargez odpscmd depuis le site officiel ODPS. Le nom du fichier est
odps_clt_release_64.tar.gz.Vous devez disposer de l'autorisation
CreateResourcepour l'espace de travail du projet.-
Après l'installation, exécutez la commande suivante dans votre terminal. La règle de nommage pour le fichier DONE est $prefix_%Y-%m-%d, où $prefix est le préfixe du nom de fichier (par défaut, le nom de la table). %Y-%m-%d représente la date de la tâche de réindexation, car la granularité minimale pour les tâches planifiées est d'un jour.
odpscmd -u accessid -p accesskey --project=<prj_name> -e "add file <done file>;" Pour obtenir des instructions sur l'utilisation du client MaxCompute odpscmd, consultez Connect by using a client (odpscmd).
Le fichier DONE doit être au format JSON et spécifier un horodatage en millisecondes pour le lot de données complètes. Les données incrémentielles sont conservées pendant un maximum de trois jours, donc cet horodatage ne peut pas remonter à plus de trois jours dans le passé.
Cet horodatage indique le point de départ à partir duquel les données incrémentielles doivent être reconstituées (backfilled). S'il n'est pas configuré, le système ajoute les données à partir de l'heure de début de la tâche de réindexation par défaut.
Par exemple, vos données complètes sont générées à 09:00. ODPS termine leur traitement à 10:00. La tâche de réindexation OpenSearch planifiée s'exécute à 10:30. Pour garantir l'intégrité des données, le fichier DONE doit spécifier l'horodatage pour 09:00 (en millisecondes). Ainsi, après le traitement des données complètes, le système ajoute toutes les données incrémentielles générées après 09:00. Si vous ne spécifiez pas cet horodatage, le système utilise par défaut l'heure de début de la tâche (10:30) et toutes les données incrémentielles de 09:00 à 10:30 seront perdues. Si vous n'avez pas de données incrémentielles, vous n'avez pas besoin de configurer l'horodatage.
Le contenu d'un fichier DONE pour une application Advanced Edition est illustré ci-dessous. Remarque : La valeur Data Time requise dans les applications Standard Edition fonctionne sur un principe similaire ; les deux servent à rattraper les données incrémentielles provenant des appels API lors d'une réindexation.
{
"timestamp":"1234567890000"
}
Priorité entre le fichier DONE et Data Time :
Le paramètre Data Time pour une source de données ODPS est obligatoire et a priorité sur le fichier DONE.
Si vous créez uniquement une version unique, vous devez spécifier uniquement Data Time. Vous ne pouvez pas utiliser un fichier DONE seul.
Si vous utilisez la réindexation planifiée, vous devez configurer à la fois Data Time et un fichier DONE. La première version donne la priorité à Data Time, et toutes les versions suivantes donnent la priorité au fichier DONE.
La source de données MaxCompute prend uniquement en charge la synchronisation complète des données. Elle ne prend pas en charge la synchronisation incrémentielle des données.