StarRocks propose un connecteur Spark officiel permettant le transfert de données entre Spark et StarRocks. Ajoutez les configurations nécessaires dans EMR Serverless Spark pour vous connecter à une instance StarRocks. Cette rubrique explique comment lire et écrire des données dans StarRocks à l'aide d'EMR Serverless Spark.
Méthodes d'accès
Vous pouvez accéder à StarRocks de deux manières, selon vos besoins :
Méthode 1 : Configuration au niveau de la tâche ou de la session
Avec cette méthode, configurez les informations de connexion à StarRocks (telles que l'URL JDBC, le nom d'utilisateur et le mot de passe) directement dans chaque tâche ou session. Cette approche convient aux scénarios suivants :
Accès temporaire ou ponctuel aux données
Différentes tâches doivent accéder à différents clusters StarRocks
Un contrôle d'accès granulaire est requis pour chaque tâche
Méthode 2 : Configuration centralisée avec Data Catalog
Seules les versions de moteur suivantes sont prises en charge : esr-4.8.0 ou ultérieure, et esr-5.2.0 ou ultérieure.
Utilisez la fonctionnalité Data Catalog d'EMR Serverless Spark pour ajouter un catalogue de données StarRocks. Une fois configuré, toutes les jobs et sessions de l'espace de travail peuvent accéder par défaut aux données autorisées du catalogue, ce qui élimine le besoin de répéter la configuration dans chaque tâche. Pour plus d'informations, consultez Gérer les catalogues de données.
Cette méthode est recommandée dans les cas suivants :
Accès fréquent aux données StarRocks
Plusieurs tâches partagent la même configuration d'accès à StarRocks
Simplification de la configuration des tâches et amélioration de l'efficacité du développement
Pour les espaces de travail nécessitant un accès fréquent et durable à StarRocks, nous vous recommandons d'utiliser le Data Catalog (Méthode 2) afin de réduire la surcharge de configuration et d'améliorer l'efficacité du développement.
Prérequis
Créez un espace de travail Serverless Spark. Pour plus d'informations, consultez Créer un espace de travail.
Créez une instance EMR Serverless StarRocks. Pour plus d'informations, consultez Créer une instance.
Limites
La version du moteur Serverless Spark doit être esr-2.5.0, esr-3.1.0, esr-4.1.0 ou une version ultérieure.
Procédure
Étape 1 : Télécharger et importer le JAR du connecteur Spark
-
Téléchargez le JAR du connecteur Spark correspondant à votre version de moteur. Pour plus d'informations, consultez Lire des données depuis StarRocks à l'aide du connecteur Spark.
RemarquePour les versions de moteur esr-4.8.0 ou ultérieures et esr-5.2.0 ou ultérieures, le JAR du connecteur Spark est intégré. Vous pouvez ignorer cette étape.
Dans cet exemple, nous téléchargeons un JAR précompilé depuis le dépôt central Maven.
RemarqueLe fichier JAR du connecteur suit le format de nommage
starrocks-spark-connector-${spark_version}_${scala_version}-${connector_version}.jar. Par exemple, si vous utilisez la version de moteur esr-4.1.0 (Spark 3.5.2, Scala 2.12) et souhaitez utiliser la version 1.1.2 du connecteur, sélectionnezstarrocks-spark-connector-3.5_2.12-1.1.2.jar. Importez le JAR du connecteur Spark téléchargé dans OSS. Pour plus d'informations, consultez Importation simple.
Étape 2 : Ajouter une connexion réseau
-
Récupérez les informations réseau.
Sur la page EMR Serverless StarRocks, accédez à la page Instance Details de votre instance StarRocks cible pour obtenir les informations relatives au Virtual Private Cloud (VPC) et au vSwitch.
-
Créez une connexion réseau.
Sur la page EMR Serverless Spark, accédez à la page Network Connection de votre espace de travail Spark, puis cliquez sur Create Network Connection.
-
Dans la boîte de dialogue Create Network Connection, saisissez un Name, sélectionnez le VPC et le vSwitch de l'instance StarRocks, puis cliquez sur OK.
RemarqueLa connexion réseau doit correspondre à l'instance StarRocks. Sélectionnez un vSwitch situé dans le même VPC que l'instance StarRocks. Si aucun vSwitch n'est disponible dans la zone de disponibilité actuelle, cliquez sur vSwitch pour accéder à la console VPC et en créer un. Pour plus d'informations, consultez VPC et vSwitches.
Étape 3 : Créer une base de données et une table
Connectez-vous à l'instance StarRocks. Pour plus d'informations, consultez Se connecter à une instance StarRocks à l'aide d'EMR StarRocks Manager.
Sur la page SQL Editor Queries, cliquez sur File ou sur l'icône
située à droite, puis cliquez sur OK pour créer un nouveau fichier.-
Dans le nouveau fichier, saisissez les instructions SQL suivantes et cliquez sur Run.
CREATE DATABASE `testdb`; CREATE TABLE `testdb`.`score_board` ( `id` int(11) NOT NULL COMMENT "", `name` varchar(65533) NULL DEFAULT "" COMMENT "", `score` int(11) NOT NULL DEFAULT "0" COMMENT "" ) ENGINE=OLAP PRIMARY KEY(`id`) COMMENT "OLAP" DISTRIBUTED BY HASH(`id`);
Étape 4 : Lire et écrire dans StarRocks
Méthode 1 : Sessions SQL et Notebook
Pour plus d'informations sur les types de sessions, consultez Session Manager.
Session SQL
-
Écrivez des données dans StarRocks à l'aide d'EMR Serverless Spark.
-
Créez une session SQL. Pour plus d'informations, consultez Gérer les sessions SQL.
Lors de la création d'une session, sélectionnez la version de moteur correspondant à la version du connecteur Spark, choisissez la connexion réseau créée à l'étape précédente dans Network Connection, et ajoutez les paramètres suivants dans Spark Configuration pour charger le connecteur Spark.
spark.emr.serverless.user.defined.jars oss://<bucketname>/path/connector.jarRemplacez
oss://<bucketname>/path/connector.jarpar le chemin OSS du connecteur Spark que vous avez importé à l'étape 1. Par exemple :oss://emr-oss/spark/starrocks-spark-connector-3.5_2.12-1.1.2.jar. -
Sur la page Development, créez une tâche SparkSQL. Ensuite, sélectionnez la session SQL que vous venez de créer dans le coin supérieur droit.
Pour plus d'informations, consultez Développer une job SparkSQL.
-
Copiez le code suivant dans le nouvel onglet SparkSQL, remplacez les valeurs des espaces réservés selon vos besoins, puis cliquez sur Run.
CREATE TEMPORARY VIEW score_board USING starrocks OPTIONS ( "starrocks.table.identifier" = "testdb.score_board", "starrocks.fe.http.url" = "<fe_host>:<fe_http_port>", "starrocks.fe.jdbc.url" = "jdbc:mysql://<fe_host>:<fe_query_port>", "starrocks.user" = "<user>", "starrocks.password" = "<password>" ); INSERT INTO `score_board` VALUES (1, "starrocks", 100), (2, "spark", 100);Description des paramètres :
-
<fe_host>: le point de terminaison interne ou public du nœud FE de votre instance EMR Serverless StarRocks. Vous trouverez cette information sur la page Instance Details, dans la section FE Details.Si vous utilisez un point de terminaison interne, assurez-vous que les deux services se trouvent dans le même VPC.
Si vous utilisez un point de terminaison public, vérifiez que les règles du groupe de sécurité autorisent le trafic sur les ports requis. Pour plus d'informations, consultez Paramètres d'accès réseau et de sécurité.
<fe_http_port>: le port HTTP du nœud FE de l'instance EMR Serverless StarRocks. La valeur par défaut est 8030. Vous trouverez cette information sur la page Instance Details, dans la section FE Details.<fe_query_port>: le port de requête du nœud FE de l'instance EMR Serverless StarRocks. La valeur par défaut est 9030. Vous trouverez cette information sur la page Instance Details, dans la section FE Details.<user>: le nom d'utilisateur de l'instance Serverless StarRocks. Par défaut, un utilisateur administrateur disposant des privilèges d'administration est fourni. Vous pouvez également ajouter de nouveaux utilisateurs pour vous connecter via la page User Management. Pour savoir comment ajouter des utilisateurs, consultez Gérer les utilisateurs et l'autorisation des données.<password>: le mot de passe correspondant à l'utilisateur<user>.
-
-
-
Interrogez les données écrites à l'aide d'EMR Serverless Spark.
Dans cet exemple, nous créons une vue temporaire nommée
test_viewdans la tâche Spark SQL et l'utilisons pour interroger les données descore_board. Copiez le code suivant dans un nouvel onglet Spark SQL, sélectionnez-le, puis cliquez sur Run the selected.CREATE TEMPORARY VIEW test_view USING starrocks OPTIONS ( "starrocks.table.identifier" = "testdb.score_board", "starrocks.fe.http.url" = "<fe_host>:<fe_http_port>", "starrocks.fe.jdbc.url" = "jdbc:mysql://<fe_host>:<fe_query_port>", "starrocks.user" = "<user>", "starrocks.password" = "<password>" ); SELECT * FROM test_view;Résultat
La requête renvoie deux enregistrements : (1, "starrocks", 100) et (2, "spark", 100).
Session Notebook
-
Écrivez des données dans StarRocks à l'aide d'EMR Serverless Spark.
-
Créez une session Notebook. Pour plus d'informations, consultez Gérer les sessions Notebook.
Lors de la création d'une session, sélectionnez la version de moteur correspondant à la version du connecteur Spark, choisissez la connexion réseau créée à l'étape précédente dans Network Connection, et ajoutez les paramètres suivants dans Spark Configuration pour charger le connecteur Spark.
spark.emr.serverless.user.defined.jars oss://<bucketname>/path/connector.jarRemplacez
oss://<bucketname>/path/connector.jarpar le chemin OSS du connecteur Spark que vous avez importé à l'étape 1. Par exemple :oss://emr-oss/spark/starrocks-spark-connector-3.5_2.12-1.1.2.jar. -
Sur la page Development, créez une tâche Interactive Development > Notebook, puis sélectionnez la session Notebook créée dans le coin supérieur droit.
Pour plus d'informations, consultez Gérer les sessions Notebook.
-
Copiez le code suivant dans une cellule Python du Notebook et cliquez sur Run.
# Replace the placeholders with your EMR Serverless StarRocks configurations. fe_host = "<fe_host>" fe_http_port = "<fe_http_port>" fe_query_port = "<fe_query_port>" user = "<user>" password = "<password>" # Create a view. create_table_sql = f""" CREATE TEMPORARY VIEW score_board USING starrocks OPTIONS ( "starrocks.table.identifier" = "testdb.score_board", "starrocks.fe.http.url" = "{fe_host}:{fe_http_port}", "starrocks.fe.jdbc.url" = "jdbc:mysql://{fe_host}:{fe_query_port}", "starrocks.user" = "{user}", "starrocks.password" = "{password}" ) """ spark.sql(create_table_sql) # Insert data. insert_data_sql = """ INSERT INTO `score_board` VALUES (1, "starrocks", 100), (2, "spark", 100) """ spark.sql(insert_data_sql)Description des paramètres :
-
<fe_host>: le point de terminaison interne ou public du nœud FE de votre instance EMR Serverless StarRocks. Vous trouverez cette information sur la page Instance Details, dans la section FE Details.Si vous utilisez un point de terminaison interne, assurez-vous que les deux services se trouvent dans le même VPC.
Si vous utilisez un point de terminaison public, vérifiez que les règles du groupe de sécurité autorisent le trafic sur les ports requis. Pour plus d'informations, consultez Paramètres d'accès réseau et de sécurité.
<fe_http_port>: le port HTTP du nœud FE de l'instance EMR Serverless StarRocks. La valeur par défaut est 8030. Vous trouverez cette information sur la page Instance Details, dans la section FE Details.<fe_query_port>: le port de requête du nœud FE de l'instance EMR Serverless StarRocks. La valeur par défaut est 9030. Vous trouverez cette information sur la page Instance Details, dans la section FE Details.<user>: le nom d'utilisateur de l'instance Serverless StarRocks. Par défaut, un utilisateur administrateur disposant des privilèges d'administration est fourni. Vous pouvez également ajouter de nouveaux utilisateurs pour vous connecter via la page User Management. Pour savoir comment ajouter des utilisateurs, consultez Gérer les utilisateurs et l'autorisation des données.<password>: le mot de passe correspondant à l'utilisateur<user>.
-
-
-
Interrogez les données écrites à l'aide d'EMR Serverless Spark.
Dans une nouvelle cellule Python, créez une vue temporaire nommée
test_viewpour interroger la tablescore_board. Copiez le code suivant dans la cellule et cliquez sur l'icône d'exécution (
) pour l'exécuter.# Create a view. create_view_sql=f""" CREATE TEMPORARY VIEW test_view USING starrocks OPTIONS ( "starrocks.table.identifier" = "testdb.score_board", "starrocks.fe.http.url" = "{fe_host}:{fe_http_port}", "starrocks.fe.jdbc.url" = "jdbc:mysql://{fe_host}:{fe_query_port}", "starrocks.user" = "{user}", "starrocks.password" = "{password}" ) """ spark.sql(create_view_sql) # Query the data. query_sql="SELECT * FROM test_view" result_df = spark.sql(query_sql) result_df.show()Résultat
+---+---------+-----+ | id| name|score| +---+---------+-----+ | 2| spark| 100| | 1|starrocks| 100| +---+---------+-----+
Méthode 2 : Job par lot Spark
-
Créez une job par lot Spark.
Sur la page EMR Serverless Spark, cliquez sur Development dans le volet de navigation de gauche.
Sous l'onglet Development, cliquez sur l'icône
.-
Dans la boîte de dialogue de création, saisissez un Name, définissez le type sur , puis cliquez sur OK.
Vous pouvez ajuster le type selon vos besoins. Cette rubrique utilise SQL à titre d'exemple. Pour plus d'informations sur les types de jobs, consultez Développer une application.
-
Lisez et écrivez dans StarRocks à l'aide de la job par lot Spark.
-
Dans le coin supérieur droit de la nouvelle page de développement de job, sélectionnez une file d'attente.
Pour savoir comment ajouter une file d'attente, consultez Gérer les files d'attente de ressources.
-
Sur la nouvelle page de développement de job, configurez les paramètres suivants, laissez les autres paramètres par défaut, puis cliquez sur Run.
Paramètre
Description
SQL File
Cet exemple utilise le fichier spark_sql_starrocks.sql, qui contient les instructions SQL de la session SQL. Avant d'utiliser le fichier, téléchargez-le, modifiez les configurations selon vos besoins, puis importez-le sur la page Artifacts.
Engine Version
Sélectionnez la version de moteur correspondant à la version du connecteur Spark.
Normal Network Connection
Sélectionnez la connexion réseau que vous avez créée à l'étape précédente.
Spark Configuration
Ajoutez le paramètre suivant dans la section Spark Configuration pour charger le connecteur Spark.
spark.emr.serverless.user.defined.jars oss://<bucketname>/path/connector.jarRemplacez
oss://<bucketname>/path/connector.jarpar le chemin OSS du connecteur Spark que vous avez importé à l'étape 1. Par exemple :oss://emr-oss/spark/starrocks-spark-connector-3.5_2.12-1.1.2.jar.
-
-
Consultez les informations de journalisation.
Dans la section Execution Records en bas de page, cliquez sur Details dans la colonne Actions.
-
Cliquez sur l'onglet Log Exploration pour afficher les journaux de la job.
Sélectionnez Driver Log > Stdout pour afficher le fichier stdout.log. Si la job aboutit, la sortie du journal contient
starrocks 100etspark 100. Cela confirme que les données ont été écrites puis lues avec succès dans StarRocks.
Options de configuration
En plus des informations de connexion requises décrites ci-dessus, vous pouvez configurer les options suivantes selon vos besoins.
Option | Description | Comment configurer |
| L'entrepôt (warehouse) utilisé pour accéder à StarRocks. Si cette option n'est pas configurée, l'entrepôt par défaut est utilisé. | Configurez cette option de l'une des manières suivantes :
|
Références
Pour plus d'informations, consultez la documentation officielle de StarRocks :