Introduction à spark-submit et au kit SDK

Tutoriel vous aidant à commencer à utiliser le code de kit SDK Java afin d'exécuter une application Spark dans Data Flow à l'aide de spark-submit et de la chaîne execute.

Démarrez avec spark-submit dans Data Flow avec le kit SDK. Suivez le tutoriel existant Introduction à Oracle Cloud Infrastructure Data Flow, mais utilisez le kit SDK Java pour exécuter les commandes spark-submit.

Avant de commencer

Terminez les prérequis pour pouvoir utiliser les commandes spark-submit dans Data Flow avec le kit SDK Java.

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

1. ETL avec Java

Utiliser Spark-submit et le kit SDK Java pour effectuer un ETL avec Java.

A l'aide de Spark-submit et du kit SDK Java, effectuez l'exercice, ETL avec Java, du tutoriel Introduction à Oracle Cloud Infrastructure Data Flow.
  1. Configurez votre location.
  2. Si vous ne disposez pas d'un bucket dans Object Storage dans lequel vous pouvez enregistrer votre entrée et vos résultats, vous devez en créer un avec une structure de dossiers appropriée. Dans cet exemple, la structure de dossiers 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à réalisé ce tutoriel avant, supprimez le contenu du répertoire de sortie, oci://<bucket-name>@<namespace-name>/output/optimized_listings, pour éviter l'échec du tutoriel.
    Remarque

    Pour rechercher l'ID de compartiment, sélectionnez Identité dans le menu de navigation, puis Compartiments. Les compartiments disponibles sont répertoriés, y compris l'OCID de chacun.

2: Apprentissage automatique avec PySpark

A l'aide de Spark-submit et du kit SDK Java, effectuez un apprentissage automatique avec PySpark.

A l'aide de Spark-submit et du kit SDK Java, procédez comme suit : 3. Apprentissage automatique avec PySpark, dans le tutoriel Introduction à Oracle Cloud Infrastructure Data Flow.
  1. Effectuez l'exercice 1. ETL avec Java, avant d'essayer cet exercice. Les résultats sont utilisés ici.
  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);
        }
     
     
      }
    }

Etapes suivantes

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

Vous pouvez utiliser spark-submit et le kit SDK Java afin de créer et d'exécuter Java, Python ou SQL avec Data Flow, et d'explorer les résultats. Data Flow gère tous les détails du déploiement, de la désactivation, de la gestion des journaux, de la sécurité et de l'accès utilisateur. Avec Data Flow, vous pouvez vous concentrer sur le développement d'applications Spark sans vous soucier de l'infrastructure.