Développez un programme MapReduce WordCount dans MaxCompute Studio, empaquetez-le sous forme de fichier JAR et exécutez la tâche sur le client MaxCompute.
Prérequis
Avant de commencer, vérifiez que les conditions suivantes sont remplies :
Le client MaxCompute est installé et configuré. Pour plus d'informations, consultez Installation et configuration du client MaxCompute.
MaxCompute Studio est installé et connecté à un projet MaxCompute. Pour plus d'informations, consultez Installation de MaxCompute Studio et Gestion des connexions aux projets.
-
Vous disposez d'un fichier de données source enregistré sur votre machine locale.
Cette rubrique utilise un exemple de fichier nommé data.txt qui contient
hello,odps. Le fichier est enregistré dans le répertoirebindu client MaxCompute.
Remarques relatives à l'utilisation
Si vous utilisez Maven pour développer un programme MapReduce, recherchez odps-sdk-mapred, odps-sdk-commons et odps-sdk-core dans le référentiel central Maven afin d'obtenir la version requise du SDK Java. Cette rubrique utilise la version 0.36.4-public à titre d'exemple. Ajoutez les dépendances suivantes au fichier pom.xml.
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-mapred</artifactId>
<version>0.36.4-public</version>
</dependency>
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-commons</artifactId>
<version>0.36.4-public</version>
</dependency>
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-core</artifactId>
<version>0.36.4-public</version>
</dependency>
Procédure
-
Étape 1 : Développer un programme MapReduce
Rédigez, exécutez et déboguez un programme MapReduce dans MaxCompute Studio.
-
Étape 2 : Générer et télécharger un fichier JAR MapReduce
Empaquetez le script WordCount.java compilé dans un fichier JAR et téléchargez-le vers le projet MaxCompute.
-
Étape 3 : Exécuter la tâche MapReduce
Exécutez la tâche MapReduce à l'aide de la commande
jaravec le fichier JAR téléchargé vers le projet MaxCompute.
Étape 1 : Développer un programme MapReduce
-
Créez un module Java MaxCompute.
Démarrez IntelliJ IDEA. Dans la barre de menus, sélectionnez .
Dans le volet de navigation de gauche de la boîte de dialogue New Module, sélectionnez MaxCompute Java.
Configurez le Module SDK et cliquez sur Next.
Saisissez un Module name, par exemple mapreduce, puis cliquez sur Finish.
-
Rédigez, exécutez et déboguez le programme MapReduce WordCount.
Dans le volet Project, cliquez avec le bouton droit sur le répertoire de code source du module , puis sélectionnez .
Dans la boîte de dialogue Create new MaxCompute java class, cliquez sur Driver, saisissez un Name tel que WordCount, puis appuyez sur Entrée.
-
Dans le fichier WordCount.java nouvellement créé, rédigez le programme MapReduce WordCount.
Pour obtenir l'exemple de code WordCount complet, consultez Exemple de code.
Dans le volet de navigation de gauche, cliquez avec le bouton droit sur le script WordCount.java et sélectionnez Run.
-
Dans la boîte de dialogue Run/Debug Configurations, configurez le MaxCompute project.
Pour le paramètre MaxCompute project, sélectionnez un Endpoint tel que
http://service.cn-hangzhou.maxcompute.aliyun.com/api, puis choisissez votre projet cible, par exempledoc_test_dev. Cliquez sur OK. Exécutez et déboguez le script WordCount.java pour vérifier qu'il se compile correctement.
Étape 2 : Générer et télécharger un fichier JAR MapReduce
Dans le volet de navigation de gauche d'IntelliJ IDEA, cliquez avec le bouton droit sur le script WordCount.java et sélectionnez Deploy to server....
-
Dans la boîte de dialogue Package a jar and submit resource, configurez les paramètres et cliquez sur OK.
Sélectionnez le MaxCompute project cible. Le champ Resource file affiche le chemin d'accès du fichier JAR empaqueté. Saisissez un Resource name, par exemple
mapreduce-1.0-SNAPSHOT.jar. Vous pouvez éventuellement ajouter un commentaire dans le champ Resource comment. Sélectionnez Force update if already exists pour écraser toute ressource existante portant le même nom.Pour plus d'informations sur les paramètres, consultez Procédure.
RemarqueSi vous utilisez Maven pour développer le programme MapReduce, vous devez télécharger manuellement le fichier JAR vers le projet MaxCompute à l'aide du client MaxCompute après l'avoir empaqueté. Pour plus d'informations, consultez Ajout d'une ressource. Exemple :
add jar mapreduce-1.0-SNAPSHOT.jar;
Étape 3 : Exécuter la tâche MapReduce
-
Connexion au client MaxCompute ou ouvrez le client MaxCompute dans MaxCompute Studio.
Le client MaxCompute est intégré à MaxCompute Studio, ce qui vous permet de l'exécuter directement depuis l'IDE. Pour plus d'informations, consultez Intégration du client MaxCompute.
-
Créez une table d'entrée et une table de sortie.
La tâche MapReduce lit les données de la table d'entrée et écrit les résultats dans la table de sortie. Exemple :
-- Create the input table wc_in. create table wc_in (key STRING, value STRING); -- Create the output table wc_out. create table wc_out (key STRING, cnt BIGINT);Pour plus d'informations sur la syntaxe de création de tables, consultez Création d'une table.
-
Utilisez la commande Tunnel Upload pour insérer des données dans la table wc_in.
-
Utilisez la commande
jarpour exécuter la tâche MapReduce avec le fichier JAR généré.Exemple :
jar -resources mapreduce-1.0-SNAPSHOT.jar -classpath mapreduce-1.0-SNAPSHOT.jar com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out;-resources mapreduce-1.0-SNAPSHOT.jar: spécifie la ressource utilisée par la tâche MapReduce. Dans cet exemple, la ressource est le fichier mapreduce-1.0-SNAPSHOT.jar téléchargé à l'étape Étape 2.-classpath mapreduce-1.0-SNAPSHOT.jar: spécifie le chemin d'accès local au fichier JAR contenant la MainClass.com.aliyun.odps.mapred.open.example.WordCount: la MainClass du programme MapReduce.wc_in wc_out: la table d'entrée et la table de sortie.
Pour plus d'informations sur la commande
jar, consultez Syntaxe. -
Exécutez la commande suivante pour afficher les données de la table wc_out.
select * from wc_out;Sortie attendue :
+------------+------------+ | key | cnt | +------------+------------+ | hello | 1 | | odps | 1 | +------------+------------+