Introduction à spark-submit et à la trousse SDK

Ce tutoriel vous aide à commencer à utiliser le code de la trousse SDK Java pour exécuter une application Spark dans le service de flux de données à l'aide de spark-submit avec la chaîne execute.

Commencez à utiliser spark-submit dans le service de flux de données avec la trousse SDK. Suivez le tutoriel existant Introduction au service de flux de données pour Oracle Cloud Infrastructure, mais utilisez la trousse SDK Java pour exécuter les commandes spark-submit.

Avant de commencer

Vous devez effectuer certaines opérations préalables avant de pouvoir utiliser les commandes spark-submit dans le flux de données avec la trousse SDK Java.

  1. Configurer votre location.
  2. Configurer des clés et la trousse SDK.
  3. Créez un projet maven et ajoutez des dépendances à la trousse SDK Java pour Oracle Cloud Infrastructure :
    <dependency>
      <groupId>com.oracle.oci.sdk</groupId>
      <artifactId>oci-java-sdk-dataflow</artifactId>
      <version>${oci-java-sdk-version}</version>
    </dependency>

1. Extraction, transformation et chargement avec Java

Utilisez Spark-submit et la trousse SDK Java pour effectuer l'extraction, la transformation et le chargement avec Java.

À l'aide de Spark-submit et de la trousse SDK Java, effectuez l'exercice ETL avec Java dans le tutoriel Introduction à Oracle Cloud Infrastructure Data Flow.
  1. Configurer votre location.
  2. Si vous n'avez pas de seau dans le service de stockage d'objets dans lequel enregistrer vos entrées et vos résultats, créez un seau avec une structure de dossier appropriée. Dans cet exemple, la structure du dossier est /output/.
  3. Exécutez le code suivant :
    public class ETLWithJavaExample {
     
      private static Logger logger = LoggerFactory.getLogger(ETLWithJavaExample.class);
      String compartmentId = "<compartment-id>"; // need to change comapartment id
     
      public static void main(String[] ars){
        System.out.println("ETL with JAVA Tutorial");
        new ETLWithJavaExample().createRun();
      }
     
      public void createRun(){
     
        ConfigFileReader.ConfigFile configFile = null;
        // Authentication Using config from ~/.oci/config file
        try {
          configFile = ConfigFileReader.parseDefault();
        }catch (IOException ie){
          logger.error("Need to fix the config for Authentication ", ie);
          return;
        }
     
        try {
        AuthenticationDetailsProvider provider =
            new ConfigFileAuthenticationDetailsProvider(configFile);
     
        // Creating a Data Flow Client
        DataFlowClient client = new DataFlowClient(provider);
        client.setRegion(Region.US_PHOENIX_1);
     
        // creation of execute String
        String executeString = "--class convert.Convert "
            + "--files oci://oow_2019_dataflow_lab@idehhejtnbtc/oow_2019_dataflow_lab/usercontent/kaggle_berlin_airbnb_listings_summary.csv "
            + "oci://oow_2019_dataflow_lab@idehhejtnbtc/oow_2019_dataflow_lab/usercontent/oow-lab-2019-java-etl-1.0-SNAPSHOT.jar "
            + "kaggle_berlin_airbnb_listings_summary.csv oci://<bucket-name>@<namespace-name>/output/optimized_listings";
     
        // Create Run details and create run.
        CreateRunResponse response;
         
        CreateRunDetails runDetails = CreateRunDetails.builder()
            .compartmentId(compartmentId).displayName("Tutorial_1_ETL_with_JAVA").execute(executeString)
            .build();
     
        CreateRunRequest runRequest = CreateRunRequest.builder().createRunDetails(runDetails).build();
        CreateRunResponse response = client.createRun(runRequest);
     
        logger.info("Successful run creation for ETL_with_JAVA with OpcRequestID: "+response.getOpcRequestId()
            +" and Run ID: "+response.getRun().getId());
     
        }catch (Exception e){
          logger.error("Exception creating run for ETL_with_JAVA ", e);
        }
     
      }
    }
    Si vous avez déjà exécuté ce tutoriel, supprimez le contenu du répertoire de sortie oci://<bucket-name>@<namespace-name>/output/optimized_listings pour éviter l'échec du tutoriel.
    Note

    Pour trouver l'ID compartiment, dans le menu de navigation, sélectionnez Identité et sélectionnez Compartiments. Les compartiments disponibles pour vous sont listés, y compris l'OCID de chacun.

2 : Apprentissage automatique avec PySpark

À l'aide de Spark-submit et de la trousse SDK Java, effectuez l'apprentissage automatique avec PySpark.

À l'aide de la trousse SDK Spark-submit et Java, terminée, 3. Apprentissage automatique avec PySpark, à partir du tutoriel Démarrage avec Oracle Cloud Infrastructure Data Flow.
  1. Remplissez l'exercice 1. Extraction, transformation et chargement avec Java avant d'essayer cet exercice. Les résultats sont utilisés dans cet exercice.
  2. Exécutez le code suivant :
    public class PySParkMLExample {
     
      private static Logger logger = LoggerFactory.getLogger(PySParkMLExample.class);
      String compartmentId = "<compartment-id>"; // need to change comapartment id
     
      public static void main(String[] ars){
        System.out.println("ML_PySpark Tutorial");
        new PySParkMLExample().createRun();
      }
     
      public void createRun(){
     
        ConfigFileReader.ConfigFile configFile = null;
        // Authentication Using config from ~/.oci/config file
        try {
          configFile = ConfigFileReader.parseDefault();
        }catch (IOException ie){
          logger.error("Need to fix the config for Authentication ", ie);
          return;
        }
     
        try {
        AuthenticationDetailsProvider provider =
            new ConfigFileAuthenticationDetailsProvider(configFile);
     
        DataFlowClient client = new DataFlowClient(provider);
        client.setRegion(Region.US_PHOENIX_1);
     
        String executeString = "oci://oow_2019_dataflow_lab@idehhejtnbtc/oow_2019_dataflow_lab/usercontent/oow_lab_2019_pyspark_ml.py oci://<bucket-name>@<namespace-name>/output/optimized_listings";
     
        CreateRunResponse response;
     
        CreateRunDetails runDetails = CreateRunDetails.builder()
            .compartmentId(compartmentId).displayName("Tutorial_3_ML_PySpark").execute(executeString)
            .build();
     
        CreateRunRequest runRequest = CreateRunRequest.builder().createRunDetails(runDetails).build();
        CreateRunResponse response = client.createRun(runRequest);
     
        logger.info("Successful run creation for ML_PySpark with OpcRequestID: "+response.getOpcRequestId()
            +" and Run ID: "+response.getRun().getId());
     
        }catch (Exception e){
          logger.error("Exception creating run for ML_PySpark ", e);
        }
     
     
      }
    }

Étape suivante

Utilisez Spark-submit et l'interface de ligne de commande dans d'autres situations.

Vous pouvez utiliser spark-submit et la trousse SDK Java pour créer et exécuter des applications Java, Python ou SQL avec le flux de données et explorer les résultats. Le service de flux de données prend en charge tous les détails du déploiement, de la panne, de la gestion des journaux, de la sécurité et de l'accès à l'interface utilisateur. Avec le service de flux de données, vous pouvez vous concentrer sur le développement d'applications Spark sans vous soucier de l'infrastructure.