La source de données MaxCompute est un hub de données qui offre un canal bidirectionnel pour lire et écrire des données dans MaxCompute.
Fonctionnalités
La source de données MaxCompute dans DataWorks utilise un point de terminaison Tunnel pour accéder au service Tunnel d'un projet MaxCompute. Cela permet de synchroniser des données en les téléchargeant vers le projet ou depuis celui-ci. Les téléchargements et transferts via le service Tunnel impliquent l'opération DownloadTable.
Pour les sources de données MaxCompute créées après le 11 décembre 2023, si le service DataWorks et le projet MaxCompute cible se trouvent dans des régions différentes, vous ne pouvez pas synchroniser directement les données à l'aide d'un point de terminaison Tunnel. Vous devez d'abord acheter une instance Cloud Enterprise Network (CEN) pour établir une connexion réseau. La synchronisation des données interrégionales n'est possible qu'une fois la connexion établie. Pour plus d'informations sur CEN et ses opérations, consultez Cloud Enterprise Network (CEN).
Lecture par lots
MaxCompute Reader prend en charge la lecture des données provenant de tables partitionnées et non partitionnées, mais pas des vues virtuelles ni des tables externes.
Lors d'une lecture par lots à partir d'une table partitionnée MaxCompute, vous ne pouvez pas configurer directement le mappage des champs pour les colonnes de clé de partition. Pour synchroniser les valeurs des clés de partition, ajoutez un champ personnalisé, saisissez manuellement le nom de la partition, puis configurez le mappage des champs.
-
Spécifiez les valeurs de partition à l'aide de paramètres de planification pour activer le remplacement automatique. Ainsi, les données de la partition correspondante sont synchronisées en fonction de l'heure de planification.
Par exemple, une table partitionnée nommée t0 contient les colonnes id et name. La clé de partition de niveau 1 est pt et la clé de partition de niveau 2 est ds. Pour lire les données de la partition où pt=<date commerciale> et ds=hangzhou, spécifiez les valeurs de partition sous la forme pt=${paramètre de planification} et ds=hangzhou lors de la configuration de la source. Ensuite, configurez le mappage des colonnes pour les colonnes id et name.
Écrivez des colonnes de clé de partition dans une table de destination en les ajoutant en tant que champs personnalisés.
MaxCompute Reader prend en charge le filtrage des données à l'aide d'une clause WHERE.
Écriture par lots
MaxCompute Writer ne prend pas en charge le type de données VARCHAR si les données source contiennent des valeurs nulles.
Si la table de destination est une
DeltaTable, développez Advanced Configuration et définissez Visible After Synchronization sur Yes. Sinon, la tâche signale une erreur si la concurrence est supérieure à 1.La synchronisation des données d'une source vers une table externe MaxCompute n'est pas prise en charge.
Si une colonne de la table de destination n'est pas mappée à une colonne source, Data Integration définit sa valeur sur null après la synchronisation, même si une valeur par défaut a été spécifiée lors de la création de la table.
MaxCompute Writer ne prend pas en charge les instructions SQL pré-importation (
preSql) ni les instructions SQL post-importation (postSql). Si vous devez effectuer des opérations SQL sur la table de destination avant ou après l'écriture des données (par exemple, exécuter des instructions DELETE pour supprimer partiellement les données pour des écritures incrémentielles), configurez un nœud SQL en amont ou en aval de la tâche de synchronisation des données pour gérer les opérations de prétraitement ou de post-traitement requises.
Écriture en temps réel
Les tâches de synchronisation en temps réel prennent en charge les groupes de ressources serverless.
Les tâches de synchronisation en temps réel ne prennent pas en charge la synchronisation des tables sans clé primaire.
La synchronisation des données d'une source vers une table externe MaxCompute n'est pas prise en charge.
Lors d'une synchronisation en temps réel vers la source de données MaxCompute par défaut (généralement
odps_first), une paire AccessKey temporaire est utilisée par défaut. Cette paire AccessKey temporaire expire après 7 jours, ce qui entraîne l'échec de la tâche. La plateforme redémarre automatiquement la tâche lorsqu'elle détecte que l'échec est dû à l'expiration d'une paire AccessKey temporaire. Si vous avez configuré des règles de surveillance pour ce type d'alerte, vous recevrez une notification d'alerte.Pour les tâches de synchronisation en temps réel vers MaxCompute en un clic, seules les données historiques complètes peuvent être interrogées le jour de la configuration. Les données incrémentielles ne peuvent être interrogées dans MaxCompute qu'après la fin de la fusion le lendemain.
Les tâches de synchronisation en temps réel vers MaxCompute en un clic génèrent une partition complète chaque jour. Pour éviter une utilisation excessive du stockage, les tables MaxCompute créées automatiquement par ces tâches ont un cycle de vie par défaut de 30 jours. Si cela ne répond pas à vos besoins métier, cliquez sur le nom de la table MaxCompute correspondante lors de la configuration de la tâche de synchronisation pour modifier le cycle de vie.
Data Integration utilise le canal de synchronisation des données du moteur MaxCompute pour télécharger et transférer des données. Pour les détails du SLA du canal de synchronisation des données, consultez Présentation de MaxCompute Tunnel. Évaluez vos choix technologiques de synchronisation des données en fonction du SLA du canal de synchronisation des données du moteur MaxCompute.
Pour la synchronisation en temps réel vers MaxCompute en mode instance en un clic, le groupe de ressources exclusif pour Data Integration doit avoir une spécification minimale de 8C16G.
Seules les sources de données MaxCompute personnalisées situées dans la même région que l'espace de travail actuel sont prises en charge. Les projets MaxCompute interrégionaux peuvent réussir le test de connectivité, mais lors de l'exécution de la tâche, une erreur indiquant que le moteur n'existe pas est signalée lors de la phase de création de la table dans MaxCompute.
-
Lorsque MaxCompute est utilisé comme destination pour la synchronisation de base de données complète, si le type de table est une table standard, seule la synchronisation en temps réel vers MaxCompute en un clic et le mode de streaming incrémentiel pour la synchronisation en temps réel de base de données complète sont pris en charge. Si le type de table est Delta Table, la synchronisation en temps réel de base de données complète et la synchronisation en temps réel vers MaxCompute en un clic sont toutes deux prises en charge.
RemarqueLorsque vous utilisez une source de données MaxCompute personnalisée, le projet DataWorks doit toujours être associé à un moteur MaxCompute. Sinon, vous ne pouvez pas créer de nœuds SQL MaxCompute, ce qui entraîne l'échec de la création du nœud done-flag pour la synchronisation complète.
Types de colonnes pris en charge
Les types de données MaxCompute 1.0, les types de données 2,0 et les types de données compatibles Hive sont pris en charge. Les sections suivantes décrivent les types de colonnes pris en charge par chaque édition de type de données.
Colonnes prises en charge par les types de données 1,0
|
Type de colonne |
Lecture par lots |
Écriture par lots |
Écriture en temps réel |
|
BIGINT |
Pris en charge |
Pris en charge |
Pris en charge |
|
DOUBLE |
Pris en charge |
Pris en charge |
Pris en charge |
|
DECIMAL |
Pris en charge |
Pris en charge |
Pris en charge |
|
STRING |
Pris en charge |
Pris en charge |
Pris en charge |
|
DATETIME |
Pris en charge |
Pris en charge |
Pris en charge |
|
BOOLEAN |
Pris en charge |
Pris en charge |
Pris en charge |
|
ARRAY |
Pris en charge |
Pris en charge |
Pris en charge |
|
MAP |
Pris en charge |
Pris en charge |
Pris en charge |
|
STRUCT |
Pris en charge |
Pris en charge |
Pris en charge |
Colonnes prises en charge par les types de données 2,0 et les types de données compatibles Hive
|
Type de colonne |
Lecture par lots (MaxCompute Reader) |
Écriture par lots (MaxCompute Writer) |
Écriture en temps réel |
|
TINYINT |
Pris en charge |
Pris en charge |
Pris en charge |
|
SMALLINT |
Pris en charge |
Pris en charge |
Pris en charge |
|
INT |
Pris en charge |
Pris en charge |
Pris en charge |
|
BIGINT |
Pris en charge |
Pris en charge |
Pris en charge |
|
BINARY |
Pris en charge |
Pris en charge |
Pris en charge |
|
FLOAT |
Pris en charge |
Pris en charge |
Pris en charge |
|
DOUBLE |
Pris en charge |
Pris en charge |
Pris en charge |
|
DECIMAL(précision, échelle) |
Pris en charge |
Pris en charge |
Pris en charge |
|
VARCHAR(n) |
Pris en charge |
Pris en charge |
Pris en charge |
|
CHAR(n) |
Non pris en charge |
Pris en charge |
Pris en charge |
|
STRING |
Pris en charge |
Pris en charge |
Pris en charge |
|
DATE |
Pris en charge |
Pris en charge |
Pris en charge |
|
DATETIME |
Pris en charge |
Pris en charge |
Pris en charge |
|
TIMESTAMP |
Pris en charge |
Pris en charge |
Pris en charge |
|
BOOLEAN |
Pris en charge |
Pris en charge |
Pris en charge |
|
ARRAY |
Pris en charge |
Pris en charge |
Pris en charge |
|
MAP |
Pris en charge |
Pris en charge |
Pris en charge |
|
STRUCT |
Pris en charge |
Pris en charge |
Pris en charge |
Conversion des types de données
Le tableau suivant décrit les conversions de types de données prises en charge par MaxCompute Reader.
|
Catégorie de type |
Type Data Integration |
Type de données de base de données |
|
Entier |
LONG |
BIGINT, INT, TINYINT et SMALLINT |
|
Booléen |
BOOLEAN |
BOOLEAN |
|
Date et heure |
DATE |
DATETIME, TIMESTAMP et DATE |
|
Virgule flottante |
DOUBLE |
FLOAT, DOUBLE et DECIMAL |
|
Binaire |
BYTES |
BINARY |
|
Complexe |
STRING |
ARRAY, MAP et STRUCT |
Si une conversion de données échoue ou si l'écriture des données dans la source de données de destination échoue, les données sont traitées comme des données incorrectes. Vous pouvez utiliser cette fonctionnalité conjointement avec le seuil de données incorrectes.
Préparatifs avant la synchronisation des données
Avant de lire ou d'écrire des données dans une table MaxCompute, activez les propriétés associées selon vos besoins.
Connexion à MaxCompute et activation des paramètres au niveau du projet
Connectez-vous au client MaxCompute. Pour plus d'informations, consultez Client MaxCompute.
Activez les paramètres au niveau du projet MaxCompute : assurez-vous de disposer des autorisations requises. Utilisez un compte Project Owner pour effectuer les opérations associées. Pour plus d'informations sur les autorisations MaxCompute, consultez Autorisations MaxCompute.
Activation de la propriété ACID
Utilisez un compte Project Owner pour exécuter la commande suivante sur le client afin d'activer la propriété ACID. Pour plus d'informations sur la sémantique ACID dans MaxCompute, consultez Sémantique ACID.
setproject odps.sql.acid.table.enable=true;
(Facultatif) Activation des types de données 2,0
Si vous devez utiliser le type TIMESTAMP dans les types de données MaxCompute 2.0, utilisez un compte Project Owner pour exécuter la commande suivante sur le client afin d'activer les types de données 2,0.
setproject odps.sql.type.system.odps2=true;
(Facultatif) Octroi d'accès aux comptes
Lorsque vous associez une ressource de calcul MaxCompute à un espace de travail, une source de données MaxCompute est créée par défaut dans DataWorks. Utilisez cette source de données pour la synchronisation des données dans l'espace de travail actuel. Si vous souhaitez synchroniser des données à partir de cette source de données MaxCompute dans un autre espace de travail, assurez-vous que le compte d'accès spécifié pour la source de données dans l'autre espace de travail dispose des autorisations requises pour accéder au projet MaxCompute. Pour l'autorisation intercomptes, consultez Autorisation intercomptes.
Créer une source de données MaxCompute
Avant de développer une tâche de synchronisation des données, créez le projet MaxCompute en tant que source de données MaxCompute dans DataWorks. Pour plus d'informations, consultez Créer une source de données MaxCompute.
Les espaces de travail en mode standard prennent en charge l'isolement des sources de données. Ajoutez et isolez séparément les sources de données pour l'environnement de développement et l'environnement de production afin de protéger vos données. Pour plus d'informations, consultez Configurer l'isolement des sources de données.
-
Si la source de données MaxCompute nommée odps_first dans un espace de travail n'a pas été créée manuellement sur la page des sources de données, il s'agit d'une source de données créée automatiquement pour le premier moteur MaxCompute associé à l'espace de travail avant la mise à niveau des sources de données. Lorsque vous effectuez une synchronisation des données à l'aide de cette source de données, les données sont lues ou écrites dans le projet de moteur MaxCompute correspondant.
Affichez le nom du projet MaxCompute utilisé par la source de données sur la page de configuration de la source de données pour confirmer à partir de quel projet MaxCompute les données sont finalement lues ou écrites. Pour plus d'informations, consultez Afficher les détails de la source de données.
Développement de tâches de synchronisation des données
Pour obtenir des informations sur le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.
Configuration d'une tâche de synchronisation par lots pour une seule table
Pour la procédure, consultez Configurer une tâche de synchronisation par lots en mode Assistant et Configurer une tâche de synchronisation par lots en mode Script.
Pour la liste complète des paramètres et des exemples de scripts pour le mode script, consultez Annexe : Exemples de scripts et descriptions des paramètres.
Configuration d'une tâche de synchronisation en temps réel pour une seule table
Pour la procédure, consultez Configurer une tâche de synchronisation en temps réel pour une seule table.
Configuration d'une tâche de synchronisation de base de données complète
Pour la procédure, consultez Synchroniser les données d'une base de données complète en mode lot, Synchroniser les données d'une base de données complète en mode temps réel et Synchronisation en temps réel vers MaxCompute en un clic.
FAQ
Pour plus de questions fréquemment posées sur Data Integration, consultez FAQ Data Integration.
Annexe : Exemples de scripts et descriptions des paramètres
Configuration d'une tâche de synchronisation par lots à l'aide de l'éditeur de code
Si vous souhaitez configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, configurez les paramètres associés dans le script en respectant les exigences de format de script unifié. Pour plus d'informations, consultez Configuration en mode script. Les informations suivantes décrivent les paramètres que vous devez configurer pour les sources de données lorsque vous configurez une tâche de synchronisation par lots à l'aide de l'éditeur de code.
Exemple de script Reader
Supprimez les commentaires du code suivant avant de l'exécuter.
{
"type":"job",
"version":"2.0",
"steps":[
{
"stepType":"odps",//The plug-in name.
"parameter":{
"partition":[],//The partition from which data is read.
"isCompress":false,//Specifies whether to compress data.
"datasource":"",//The data source.
"column":[//The column information of the source table.
"id"
],
"where": "",//The specific WHERE clause content when data filtering by using WHERE is enabled.
"enableWhere":false,//Specifies whether to enable data filtering by using WHERE.
"table":""//The table name.
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{
},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"//The error count.
},
"speed":{
"throttle":true,//If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled.
"concurrent":1, //The concurrency.
"mbps":"12"//The throttling rate. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Si vous souhaitez spécifier le point de terminaison Tunnel pour MaxCompute, configurez manuellement la source de données en mode script. Remplacez "datasource":"", dans l'exemple précédent par les paramètres spécifiques de la source de données. Exemple :
"accessId":"*******************",
"accessKey":"*******************",
"endpoint":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"odpsServer":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"tunnelServer":"http://dt.eu-central-1.maxcompute.aliyun.com",
"project":"*****",
Paramètres du script Reader
|
Paramètre |
Description |
Obligatoire |
Valeur par défaut |
|
datasource |
Le nom de la source de données. Le mode script vous permet d'ajouter des sources de données. La valeur de ce paramètre doit être identique au nom de la source de données que vous avez ajoutée. |
Oui |
Aucune |
|
table |
Le nom de la table à partir de laquelle les données sont lues. Le nom n'est pas sensible à la casse. |
Oui |
Aucune |
|
partition |
Les informations de partition des données à lire.
Par exemple, une table partitionnée test contient les quatre partitions suivantes : pt=1,ds=hangzhou, pt=1,ds=shanghai, pt=2,ds=hangzhou et pt=2,ds=beijing. Configurez les paramètres suivants pour lire les données de différentes partitions :
De plus, définissez des conditions pour récupérer les données de partition en fonction de vos besoins :
Remarque
|
Obligatoire si la table est une table partitionnée. Ne doit pas être spécifié si la table est une table non partitionnée. |
Aucune |
|
column |
Les informations de colonne de la table source MaxCompute. Par exemple, si la table test possède les colonnes id, name et age :
|
Oui |
Aucune |
|
enableWhere |
Indique s'il faut utiliser une clause WHERE pour le filtrage des données. |
Non |
false |
|
where |
Le contenu spécifique de la clause WHERE lorsque le filtrage des données à l'aide de WHERE est activé. |
Non |
Aucune |
Exemple de script Writer
Voici un exemple de configuration de script.
{ "type":"job", "version":"2.0",//The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"odps",//The plug-in name. "parameter":{ "partition":"",//The partition information. "truncate":true,//The cleanup rule. "isCompress":false,//Specifies whether to compress data. "datasource":"odps_first",//The data source name. "column": [//The source column names. "id", "name", "age", "sex", "salary", "interest" ], "table":""//The table name. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"//The error count, which specifies the maximum number of tolerable dirty data records. }, "speed":{ "throttle":true,//If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled. "concurrent":1, //The concurrency. "mbps":"12"//The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Si vous souhaitez spécifier le point de terminaison Tunnel pour MaxCompute, configurez manuellement la source de données en mode script. Remplacez "datasource":"", dans l'exemple précédent par les paramètres spécifiques de la source de données. Exemple :
"accessId":"<yourAccessKeyId>",
"accessKey":"<yourAccessKeySecret>",
"endpoint":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"odpsServer":"http://service.eu-central-1.maxcompute.aliyun-inc.com/api",
"tunnelServer":"http://dt.eu-central-1.maxcompute.aliyun.com",
"project":"**********",
Paramètres du script Writer
|
Paramètre |
Description |
Obligatoire |
Valeur par défaut |
|
datasource |
Le nom de la source de données. Le mode script vous permet d'ajouter des sources de données. La valeur de ce paramètre doit être identique au nom de la source de données que vous avez ajoutée. |
Oui |
Aucune |
|
table |
Le nom de la table dans laquelle les données sont écrites. Le nom n'est pas sensible à la casse. Vous ne pouvez pas spécifier plusieurs tables. |
Oui |
Aucune |
|
partition |
Les informations de partition de la table dans laquelle les données sont écrites. Spécifiez la partition jusqu'au dernier niveau. Par exemple, pour écrire des données dans une table avec trois niveaux de partitions, spécifiez la partition de dernier niveau, telle que
|
Obligatoire si la table est une table partitionnée. Ne doit pas être spécifié si la table est une table non partitionnée. |
Aucune |
|
column |
La liste des colonnes à importer. Pour importer toutes les colonnes, configurez
|
Oui |
Aucune |
|
truncate |
En définissant Étant donné que SQL MaxCompute est utilisé pour le nettoyage des données, SQL ne peut pas garantir l'atomicité. Par conséquent, l'option truncate n'est pas une opération atomique. Lorsque plusieurs tâches nettoient simultanément les partitions d'une même Table ou Partition, des problèmes de séquençage de la concurrence peuvent survenir. Pour éviter ce problème, nous vous recommandons de ne pas avoir plusieurs jobs effectuant des opérations DDL sur la même partition en même temps, ou de créer les partitions avant de démarrer plusieurs jobs concurrents. |
Oui |
Aucune |
|
emptyAsNull |
Indique s'il faut convertir les chaînes vides en NULL avant l'écriture. |
Non |
false |
|
consistencyCommit |
Visible après la synchronisation.
|
Non |
false |