Le nœud Shell de DataWorks s'adresse aux ingénieurs de données. Il exécute des scripts shell standard non interactifs et se prête parfaitement aux tâches d'automatisation, telles que le traitement de fichiers Object Storage Service (OSS) ou l'appel d'outils externes. Le nœud intègre ossutil nativement, ce qui permet un accès sécurisé à OSS via des fichiers de configuration ou des paramètres de ligne de commande. Il prend également en charge l'injection de paramètres de planification, le référencement de ressources et l'extension de l'environnement d'exécution à l'aide d'images personnalisées afin de répondre aux exigences de planification et d'exploitation et maintenance (O&M) de niveau production.
Autorisations
Ajoutez le compte RAM utilisé pour le développement du nœud à l'espace de travail cible et attribuez-lui le rôle de développeur ou d'administrateur de l'espace de travail. Pour plus de détails, consultez la rubrique Ajouter un membre à un espace de travail.
Types de nœuds de traitement de données
DataWorks propose divers types de nœuds de traitement de données. Choisissez un type de nœud adapté à votre scénario métier pour effectuer des tâches de nettoyage de données à grande échelle. Les scripts shell ne constituent pas la seule option disponible.
Nœud de synchronisation par lot : convient aux migrations et transformations de données à grande échelle, et prend en charge la synchronisation de données par lot entre différentes sources de données.
Nœud MaxCompute SQL : idéal pour les opérations ETL basées sur SQL appliquées à des ensembles de données massifs, avec prise en charge du calcul distribué.
Nœud Shell (cette rubrique) : approprié pour appeler des outils externes ou exécuter une logique de script personnalisée.
Nœud d'assignation combiné à un nœud for-each : conçu pour le traitement par lot en boucle. Il permet d'itérer sur un ensemble de données et d'exécuter des opérations sur chaque élément.
Remarques d'utilisation
-
Limitations syntaxiques
La syntaxe shell standard est prise en charge. La syntaxe interactive n'est pas prise en charge.
-
Environnement d'exécution et accès réseau
Un nœud Shell peut s'exécuter sur un groupe de ressources serverless (recommandé) ou sur un groupe de ressources dédié à la planification (anciennes versions). Pour acheter et utiliser un groupe de ressources serverless, consultez la rubrique Utiliser des groupes de ressources serverless.
Lorsqu'un nœud Shell s'exécute sur un groupe de ressources serverless, vous devez ajouter l'adresse IP ou le bloc CIDR du groupe de ressources serverless à la liste d'autorisation de la destination si celle-ci est configurée.
Avec un groupe de ressources serverless, une tâche unique prend en charge une configuration maximale de
64CU. Afin d'éviter les pénuries de ressources susceptibles d'affecter le démarrage des tâches, nous vous recommandons de ne pas dépasser16CU.
-
Extension de l'environnement de développement
Si votre tâche requiert un environnement de développement spécifique, utilisez la fonctionnalité d'image personnalisée de DataWorks pour créer un environnement répondant à vos besoins. Pour en savoir plus, consultez la rubrique Image personnalisée.
-
Ressources et appels multiples de scripts
Évitez de lancer un grand nombre de sous-processus dans un nœud Shell. Comme les nœuds Shell ne disposent actuellement d'aucune limite de ressources, un nombre élevé de sous-processus risque d'affecter les autres tâches exécutées sur le même groupe de ressources de planification.
La taille du code de la tâche ne doit pas dépasser 128 Ko.
Démarrage rapide
L'exemple suivant vous guide tout au long du processus de création, de débogage, de configuration et de déploiement d'un nœud Shell qui affiche « Hello DataWorks! ».
Développement du nœud
Connectez-vous à la console DataWorks. Après avoir sélectionné la région cible, cliquez sur dans le volet de navigation de gauche. Sélectionnez l'espace de travail cible dans la liste déroulante, puis cliquez sur Go to DataStudio.
Placez le curseur sur l'icône
, puis cliquez sur . Dans la boîte de dialogue Create Node, saisissez le nom du nœud et son chemin d'accès.-
Saisissez du code shell standard dans l'éditeur de script (la syntaxe interactive n'est pas prise en charge) :
echo "Hello DataWorks!" Une fois le code terminé, cliquez sur
, sélectionnez le groupe de ressources et l'image cibles, puis exécutez la tâche du nœud Shell.Après le débogage réussi du script, cliquez sur Scheduling Settings à droite pour configurer des politiques de planification de niveau production, telles que l'horaire de planification et les propriétés de ressources. Cela permet au nœud de s'exécuter périodiquement comme prévu. Pour plus d'informations sur la configuration des propriétés de planification des nœuds, consultez la rubrique Configurer les paramètres de planification.
Déployer et gérer les nœuds
Une fois les propriétés de planification configurées, soumettez le nœud à l'environnement de développement, puis déployez-le dans l'environnement de production pour une planification périodique.
Après le déploiement du nœud, la tâche s'exécute périodiquement selon le planning que vous avez configuré. Cliquez sur l'icône
en haut à gauche, puis sélectionnez sur la page de navigation qui s'affiche pour accéder à Operation Center. Ensuite, dans le menu de gauche, accédez à pour afficher les tâches planifiées déployées. Pour plus d'informations, consultez la rubrique Gérer les tâches planifiées.
Utilisation avancée
Référencer des ressources
-
DataWorks vous permet de télécharger des ressources vers DataWorks via la gestion des ressources pour les utiliser dans les nœuds Shell. Pour plus d'informations, consultez la rubrique Gérer les ressources.
RemarqueUne ressource doit être soumise avant de pouvoir être référencée par un nœud. Si la ressource est requise par une tâche de production, vous devez également la déployer dans l'environnement de production. Pour plus d'informations, consultez la rubrique Déployer des nœuds.
Dans l'arborescence de gauche de Data Studio, localisez la ressource téléchargée.
-
Cliquez avec le bouton droit sur la ressource et sélectionnez Insert Resource Path. La ressource est alors référencée dans le nœud actuel. Vous pouvez écrire du code sur la page d'édition du nœud pour exécuter la ressource.
RemarqueAprès un référencement réussi, le système insère automatiquement un commentaire de déclaration au format
##@resource_reference{resource_name}en haut du script.Ce commentaire constitue un identifiant obligatoire permettant à DataWorks de reconnaître les dépendances de ressources et de monter automatiquement la ressource correspondante dans l'environnement d'exécution au moment de l'exécution. Ne le modifiez ni ne le supprimez manuellement.
Utiliser les paramètres de planification
Les paramètres de planification sont injectés dans les nœuds Shell en tant que paramètres positionnels. Les noms de variables personnalisés ne sont pas pris en charge. DataWorks transmet les valeurs des paramètres de planification que vous configurez dans les Scheduling Settings d'un nœud au script shell sous forme de paramètres positionnels, tels que $1, $2, $3, etc. Lorsque plus de 9 paramètres sont utilisés, employez la syntaxe avec accolades, telle que ${10} et ${11}, pour garantir une analyse correcte. Les valeurs de plusieurs paramètres doivent être séparées par des espaces, et l'ordre doit correspondre strictement aux références positionnelles dans le script.
Dans cet exemple :
Le paramètre intégré $1 reçoit la date métier : $bizdate.
Le paramètre personnalisé $2 reçoit la date métier : ${yyyymmdd}.
Le paramètre personnalisé $3 reçoit la date métier : $[yyyymmdd].
Si une valeur de paramètre contient des espaces, placez-la entre guillemets. L'intégralité du contenu situé entre les guillemets est traitée comme un seul paramètre.
Pour plus d'informations sur la configuration et l'utilisation des paramètres de planification, consultez la rubrique Configurer les paramètres de planification.
Utiliser ossutil pour accéder à OSS
Le nœud Shell de DataWorks prend nativement en charge l'outil de ligne de commande Alibaba Cloud OSS ossutil, qui permet la gestion des buckets, le téléchargement et le téléversement de fichiers, les opérations par lot et d'autres tâches. Vous pouvez configurer les identifiants d'accès pour utiliser ossutil afin d'accéder à OSS via un fichier de configuration ou des paramètres de ligne de commande.
Pour utiliser ossutil afin d'accéder à OSS via des paramètres de ligne de commande, consultez la rubrique Accéder à OSS à l'aide de paramètres de ligne de commande.
Pour utiliser ossutil afin d'accéder à OSS via un fichier de configuration, consultez la rubrique Accéder à OSS à l'aide d'un fichier de configuration.
Annexe : Codes de sortie de script
Vous pouvez utiliser les codes de sortie de script pour déterminer plus précisément si un script s'est exécuté avec succès.
Code de sortie 0 : indique un succès.
Code de sortie -1 : indique que le processus a été arrêté.
Code de sortie 2 : indique que la plateforme doit relancer automatiquement la tâche une fois.
Autres codes de sortie : indiquent un échec.
Voici un exemple de journal d'exécution lorsque le nœud Shell s'exécute avec succès (code de sortie 0).
INFO Exit code of the Shell command 0 INFO --- Invocation of Shell command completed --- INFO Shell run successfully!
En raison du mécanisme shell sous-jacent, le code de sortie de l'ensemble du script dans un nœud Shell correspond au code de sortie de la dernière commande exécutée.
Références
Pour apprendre à utiliser les commandes Python 2 ou Python 3 dans un nœud Shell afin d'exécuter des scripts Python, consultez la rubrique Exécuter des scripts Python dans un nœud Shell.
en haut à gauche, puis sélectionnez