Tous les produits
Search
Centre de documentation

E-MapReduce:Lire et écrire des données dans MySQL

Dernière mise à jour :Sep 17, 2026

Serverless Spark charge automatiquement le pilote JDBC MySQL (version 8.0.33) au démarrage. Connectez-vous à MySQL via une session SQL, une tâche par lots ou un Notebook pour lire et écrire des données.

Prérequis

  • Un espace de travail Serverless Spark est créé. Pour plus d'informations, consultez la rubrique Créer un espace de travail.

  • Une instance MySQL est créée.

    Vous pouvez utiliser une instance MySQL auto-gérée ou un service de base de données Alibaba Cloud tel que RDS for MySQL ou PolarDB for MySQL.

    Cette rubrique utilise RDS for MySQL comme exemple. Pour plus d'informations, consultez la rubrique Créer et configurer une instance RDS for MySQL.

Notes d'utilisation

Assurez-vous que Serverless Spark et MySQL sont connectés au niveau du réseau. Pour obtenir des détails sur la configuration, consultez la rubrique Établir une connectivité réseau entre EMR Serverless Spark et d'autres VPC.

Remarque

Lorsque vous configurez les règles du groupe de sécurité, n'ouvrez que les ports requis. Dans cet exemple, ouvrez le port TCP 3306.

Procédure

Méthode 1 : Utilisation d'une session SQL

  1. Créez une session SQL. Dans la section Sessions, créez une session SQL et sélectionnez une connexion réseau préconfigurée de type Normal Network Connection. Pour plus d'informations, consultez la rubrique Créer une session SQL.

  2. Créez une tâche SQL. Dans la section Development, créez une tâche Spark SQL et exécutez le code SQL suivant.

    CREATE TEMPORARY VIEW test
    USING org.apache.spark.sql.jdbc
    OPTIONS (
      url 'jdbc:mysql://<jdbc_url>/',
      dbtable '<db>.<table>',
      user '<username>',
      password '<password>'
    );
    SELECT * FROM test;

    Le tableau suivant décrit les paramètres de l'instruction SQL.

    Paramètre

    Description

    url

    La chaîne de connexion JDBC au format jdbc:mysql://<jdbc_url>/. Remplacez <jdbc_url> par la valeur réelle.

    dbtable

    La table de base de données à lire, au format <db>.<table>. Exemple : test_mysql_db.test.

    user

    Le nom d'utilisateur de la base de données MySQL.

    Remarque

    L'utilisateur doit disposer d'une autorisation de lecture sur la table cible.

    password

    Le mot de passe de la base de données MySQL.

    Si la requête renvoie le contenu de la table, la connexion est établie avec succès.

  3. Insérez des données. Exécutez la commande suivante pour insérer des données dans la table MySQL.

    INSERT INTO test VALUES(4, 'd'),(5, 'e');
    SELECT * FROM test;

    Si la requête renvoie les données insérées, l'opération d'écriture a réussi.

Méthode 2 : Utilisation d'une session Notebook

  1. Créez une session Notebook. Dans la section Sessions, créez une session Notebook et sélectionnez une connexion réseau préconfigurée de type Normal Network Connection. Pour plus d'informations, consultez la rubrique Créer une session Notebook.

  2. Créez une tâche Notebook. Dans la section Development, créez une tâche de type Interactive Development > Notebook et exécutez le code Python suivant pour effectuer un test.

    df = spark.read \
      .format("jdbc") \
      .option("url", "jdbc:mysql://<jdbc_url>") \
      .option("dbtable", "<db>.<table>") \
      .option("user", "<username>") \
      .option("password", "<password>") \
      .load()
    df.show()

    Si la sortie affiche le contenu de la table, la connexion est établie avec succès.

  3. Insérez des données. Exécutez le code suivant pour insérer des données dans la table MySQL.

    df = spark.createDataFrame([(6, 'f'), (7, 'g')], ["id", "name"])
    df.write \
      .format("jdbc") \
      .mode("append") \
      .option("url", "jdbc:mysql://<jdbc_url>") \
      .option("dbtable", "<db>.<table>") \
      .option("user", "<username>") \
      .option("password", "<password>") \
      .save()
    df.show()
    

    Le paramètre mode("append") spécifie le mode d'écriture par ajout, qui ajoute des données à la table sans écraser les données existantes.

    Si la sortie affiche les données insérées, l'opération d'écriture a réussi.

Méthode 3 : Utilisation d'une tâche Spark par lots

  1. Compilez et empaquetez le code de test Scala suivant dans un fichier JAR.

    package spark.test
    import org.apache.spark.sql.SparkSession
    object Main {
      def main(args: Array[String]): Unit = {
        val spark = SparkSession.builder()
          .appName("test")
          .getOrCreate()
        val newRows = spark.createDataFrame(Seq((6, "f"), (7, "g"))).toDF("id", "name")
        newRows.write.format("jdbc")
          .mode("append")
          .option("url", "jdbc:mysql://<jdbc_url>")
          .option("dbtable", "<db>.<table>")
          .option("user", "<username>")
          .option("password", "<password>")
          .save()
        spark.read.format("jdbc")
          .option("url", "jdbc:mysql://<jdbc_url>")
          .option("dbtable", "<db>.<table>")
          .option("user", "<username>")
          .option("password", "<password>")
          .load()
          .show()
        spark.stop()
      }
    }
  2. Créez une tâche par lots. Dans la section Development, créez une tâche de type Application > JAR et configurez les paramètres suivants. Pour plus d'informations, consultez la rubrique Développer une tâche par lots ou en streaming.

    • Main JAR Resource : sélectionnez ou saisissez le chemin d'accès au fichier JAR empaqueté.

    • Main Class : spark.test.Main.

    • Normal Network Connection : sélectionnez une connexion réseau préconfigurée.

  3. Vérifiez le résultat. Une fois la tâche exécutée, cliquez sur Log Exploration dans la section Execution Records. Dans l'onglet Stdout du journal Driver Log, vous pouvez consulter le contenu de la table MySQL.