MaxCompute, anciennement nommé Open Data Processing Service (ODPS), est une plateforme de calcul à grande échelle. Si vos données résident dans MaxCompute, vous pouvez configurer cette dernière comme source de données pour OpenSearch Industry Algorithm Edition. Les structures de tables à trois niveaux sont prises en charge. Lorsque vous déclenchez une réindexation, le système extrait automatiquement l'intégralité des données de la table spécifiée. Vous devez transmettre les données incrémentielles via des appels API SDK.
Configurer un AccessKey
OpenSearch Industry Algorithm Edition utilise une paire AccessKey (AccessKey ID et AccessKey Secret) pour télécharger les données depuis vos tables MaxCompute. Préparez une paire AccessKey avant de configurer la source de données.
Votre projet MaxCompute et votre application OpenSearch doivent appartenir au même compte Alibaba Cloud.
La paire AccessKey de votre compte Alibaba Cloud permet d'accéder aux tables de n'importe quel projet MaxCompute associé à ce compte.
Pour renforcer la sécurité, nous vous recommandons d'utiliser un utilisateur RAM. Suivez les étapes ci-dessous pour en configurer un.
Créez un utilisateur RAM sous votre compte Alibaba Cloud. Pour plus d'informations, consultez la rubrique Créer et autoriser un utilisateur RAM.
Dans MaxCompute, ajoutez l'utilisateur RAM en tant que membre à votre projet.
Dans la boîte de dialogue Manage Members de votre projet MaxCompute, recherchez et sélectionnez l'utilisateur RAM cible dans la liste Search Members située à gauche. Cliquez sur la flèche droite pour déplacer l'utilisateur vers la liste Selected/To-be-added Members située à droite. Vous pouvez également saisir un ou plusieurs noms de membres, séparés par des virgules, dans la zone de saisie Manually Add Member en bas de page, puis cliquez sur OK.
-
Après avoir ajouté le membre, accédez à la page MaxCompute DataStudio et exécutez la commande
list users;pour trouver le nom d'utilisateur complet. Pour plus d'informations, consultez la rubrique Se connecter à l'aide de la console (Query Editor).OK OK OK OK OK OK OK OK A xxx RAM$o; xxx h_test@test.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 d'utilisateur complet et accordez les permissions requises. Dans les commandes suivantes, remplacez xxx par le nom d'utilisateur que vous avez copié.
-- 1. Grant permissions to list projects and create instances. grant CreateInstance,List on project zy_ts_test to user xxx; -- 2. Grant permissions to select, describe, and download table data. GRANT select,describe,download ON TABLE people_info TO USER xxx; -- 3. (Optional) Grant label-based permissions on the ODPS table. set label 2 to USER xxx; -- Show the grants for the specified user. show grants for xxx;
Une fois les permissions accordées, configurez la source de données MaxCompute dans la console OpenSearch.
Configurer la source de données MaxCompute
Sur la page de configuration de l'application, sélectionnez Use Data Source, puis choisissez la source de données MaxCompute.
Dans la liste des types de sources de données, cliquez sur MaxCompute.
-
Cliquez sur Connect to Database, saisissez vos informations MaxCompute, y compris le nom du projet, ainsi que l'AccessKey et l'AccessKey Secret du compte autorisé.
Une fois les détails saisis, cliquez sur Connect.
-
Une fois la connexion établie, sélectionnez les tables de données à configurer. L'exemple suivant illustre l'ajout de tables à trois niveaux.
Dans la boîte de dialogue Select Data Source, cliquez sur l'onglet MaxCompute. Dans la zone Select Database, choisissez la base de données connectée. Dans la zone Select Data Table, sélectionnez les tables cibles, telles que
default.item_tableetopensearch.bank_data. Déplacez-les vers la liste Selected, puis cliquez sur OK.
Le système mappe automatiquement les champs de vos tables sources. Ajustez ces mappages si nécessaire. Une fois terminé, cliquez sur Next.
Le tableau de configuration des champs mappés automatiquement comprend les colonnes Field name, Primary key, Type, Join with another table et Actions. Pour chaque champ, vous pouvez définir un type de données (tel que TEXT ou INT), spécifier une clé primaire, configurer des jointures avec d'autres tables, ainsi qu'ajouter ou supprimer des champs.
Lors de la configuration de votre application, vous devez définir une table comme table principale. Chaque table doit également disposer d'un champ de clé primaire unique.
-
Configurez le schéma d'index. Sélectionnez un analyseur approprié pour vos besoins de recherche. Pour plus d'informations, consultez la rubrique Schéma d'index. Une fois terminé, cliquez sur Next.
Dans l'exemple, deux index sont configurés. L'index default inclut les champs country, source_buy_cnt, city, item_type, last_modify_time, channel, title et subscribe_cnt, et il utilise l'analyseur Chinese - General. L'index id inclut le champ custom_pk_id et utilise l'analyseur keyword.
-
Configurez la source de données. Cela implique la configuration des mappages de champs, la sélection des informations de partition et le choix d'un mécanisme de contrôle de la synchronisation des données.
Sur la page de configuration Data Source, cliquez sur + Add a data source pour ajouter la source de données MaxCompute.
5.1. Configurez les mappages de champs : Cliquez sur l'icône de modification dans la colonne Actions. OpenSearch Industry Algorithm Edition fournit plusieurs plug-ins de source de données pour MaxCompute. Pour utiliser un plug-in, cliquez sur le signe plus (+) dans la colonne Content Conversion lors de la configuration du mappage de champ. Le plug-in transforme le contenu du champ source avant de le synchroniser avec OpenSearch. Si un plug-in échoue en raison d'une erreur de configuration ou d'un problème de connexion, le champ source est synchronisé sans transformation.
5.2. Sélectionnez les informations de partition : En fonction de la structure de vos données MaxCompute, vous pouvez spécifier les partitions à importer. Utilisez une expression régulière pour définir les partitions. Par exemple, combinez cette option avec la fonctionnalité de réindexation planifiée pour importer les données d'une nouvelle partition chaque jour.
Expression régulière : Le signe égal (=), la virgule (,), le point-virgule (;) et les doubles barres verticales (||) sont des caractères réservés. Pour importer automatiquement l'intégralité des données de la partition de la veille, utilisez une expression telle que
ds=%Y%m%d || -1 days.
ds est le nom du champ de partition. N'ajoutez pas d'espaces ni d'autres caractères invisibles autour du signe égal (=).
Les exemples suivants montrent comment utiliser les conditions de partition pour MaxCompute.
Pour spécifier plusieurs règles de filtre de partition, séparez-les par un point-virgule (;). Par exemple,
pt=1;pt=2correspond à toutes les partitions où le champ de partitionptest1ou2.Une règle de filtre peut spécifier des valeurs pour plusieurs champs de partition, séparés par des virgules (,). Par exemple,
pt1=1,pt2=2,pt3=3correspond aux partitions qui satisfont simultanément aux trois conditions. Notez que les fonctions telles que%Y%m%d || -1 dayssont prises en charge pour les partitions à un seul niveau, mais pas pour les filtres de partition à plusieurs niveaux.

Exemple : Supposons qu'une table MaxCompute possède une partition pt qui contient une sous-partition ds, comme illustré dans la figure précédente.
Partitions multiples :
pt=1;pt=2synchronise toutes les données des partitionspt=1etpt=2.Champs de partition multiples :
pt=1,ds=1synchronise les données de la sous-partitionds=1au sein de la partitionpt=1.Syntaxe non prise en charge : Les expressions telles que
pt=1,ds=%Y%m%d || -1 daysoupt=1;pt=%Y%m%d || -1 daysne sont actuellement pas prises en charge.La valeur d'un champ de partition peut être un caractère générique (*), qui correspond à n'importe quelle valeur. Dans ce cas, vous pouvez omettre le champ de la règle de filtre.
La valeur d'un champ de partition peut être une expression régulière. Par exemple,
pt=[0-9]*correspond à toutes les partitions où la valeur deptest un nombre.La valeur d'un champ de partition peut utiliser une correspondance basée sur le temps. Le format est
partition_field=formatted_time_value||time_interval_expression. Par exemple,ds=%Y%m%d || -1 daysspécifie que le champ de partition estds, le format est20150510et les données de la veille sont accessibles.5.1. L'heure formatée prend en charge les spécificateurs de format de date standard répertoriés dans le tableau suivant.
5.2. L'expression d'intervalle de temps prend en charge le format
+/- n unit, oùunitpeut êtreweek(s),day(s),hour(s),minute(s),second(s)oumicrosecond(s). Un signe plus (+) indique une heurenunités après la création de la tâche, tandis qu'un signe moins (-) indique une heurenunités avant.5.3. Par défaut, le système remplace les paramètres de temps dans toutes les règles de filtre par un décalage
+0 days. Par conséquent, sachez que les valeurs de champ utilisées pour le filtrage ne peuvent pas contenir ces spécificateurs de format de date sous forme de chaînes littérales. Par exemple, si une tâche est créée un mercredi, un filtrept=%abccorrespond aux partitions dont la valeurptestWedbc, et non la chaîne littérale%abc.
Spécificateurs de format de date disponibles :
%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 two-digit number (00-99)
%Y: Year as a four-digit number
5.3. Configurez le mécanisme de contrôle de la synchronisation des données :
Sélectionnez Use DONE file pour contrôler le moment où le système démarre une synchronisation complète et aider à garantir l'intégrité des données. Avant de démarrer une synchronisation complète depuis MaxCompute, le système vérifie la présence du fichier DONE du jour actuel et attend si le fichier n'est pas trouvé. Le délai d'expiration par défaut est d'une heure.
Téléchargez le client odpscmd depuis le site Web officiel de MaxCompute. Le nom du package est
odps_clt_release_64.tar.gz.Vous devez disposer de la permission
CreateResourcesur le projet cible.-
Après l'installation, exécutez la commande suivante pour télécharger le fichier DONE. Nommez le fichier en utilisant le format
$prefix_%Y-%m-%d, où$prefixest un préfixe qui correspond par défaut au nom de la table, et%Y-%m-%dest la date de la tâche de réindexation. L'intervalle minimum 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 la rubrique Se connecter à l'aide du client local (odpscmd).
Le fichier DONE doit être au format JSON et contenir un
timestampen millisecondes pour l'ensemble complet de données. Le système conserve les données incrémentielles pendant un maximum de trois jours, donc cet horodatage ne peut pas remonter à plus de trois jours dans le passé.Cet horodatage spécifie le point dans le temps à partir duquel commencer à appliquer les données incrémentielles. Si vous ne le configurez pas, le système ajoute les données incrémentielles à partir de l'heure de début de la tâche de réindexation.
Par exemple, considérons un ensemble de données complet généré à 09:00. MaxCompute termine son traitement à 10:00 et une réindexation planifiée dans OpenSearch est définie pour 10:30. Pour garantir l'intégrité des données, le fichier DONE doit spécifier l'horodatage de 09:00 (en millisecondes). Après la synchronisation 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 omettez cet horodatage, le système ajoute les données incrémentielles à partir de l'heure de réindexation (10:30), ce qui entraîne la perte des données générées entre 09:00 et 10:30. Ce paramètre est crucial pour éviter la perte de données. L'horodatage n'est pas requis si vous n'utilisez pas de données incrémentielles.
Le paramètre data time fonctionne selon un principe similaire à l'horodatage du fichier DONE, en suivant le point de départ des données incrémentielles transmises via des appels API lors d'une réindexation.
{
"timestamp":"1234567890000"
}
Priorité du fichier DONE et de l'heure des données :
Le paramètre data time pour une source de données MaxCompute est obligatoire et a priorité sur le fichier DONE.
Si vous créez une seule version d'application, vous devez spécifier l'heure des données. Un fichier DONE ne peut pas être utilisé seul dans ce scénario.
Pour utiliser la réindexation planifiée, vous devez configurer à la fois l'heure des données et un fichier DONE. La première version utilise l'heure des données. Pour toutes les versions suivantes créées automatiquement, le fichier DONE a priorité.
OpenSearch Industry Algorithm Edition prend en charge trois sources de données Alibaba Cloud : RDS, MaxCompute (anciennement ODPS) et PolarDB. RDS et PolarDB prennent en charge les configurations de jointure multi-tables, vous permettant de lier une table principale à des tables externes au sein d'une application. MaxCompute est limité à une seule base de données par application. Les bases de données gérées par l'utilisateur et autres sources de données externes ne sont pas prises en charge.
Pour séparer les environnements de test et de production, créez des instances OpenSearch indépendantes avec différentes sources de données.
Notes d'utilisation
La connexion à la source de données MaxCompute prend uniquement en charge la synchronisation complète. Pour gérer les mises à jour incrémentielles, vous devez transmettre les données séparément à l'aide du SDK.