Introduzione a Spark-Submit e SDK

Esercitazione che consente di iniziare a utilizzare il codice SDK Java per eseguire un'applicazione Spark in Data Flow utilizzando spark-submit con la stringa execute.

Inizia a utilizzare spark-submit in Data Flow utilizzando SDK. Segui l'esercitazione esistente per la guida introduttiva a Oracle Cloud Infrastructure Data Flow, ma utilizza Java SDK per eseguire comandi spark-submit.

Informazioni preliminari

Completare i prerequisiti prima di poter utilizzare i comandi spark-submit in Data Flow con Java SDK.

  1. Impostare la tenancy.
  2. Impostare le chiavi e configurare.
  3. Crea un progetto maven e aggiungi le dipendenze dell'SDK Java di 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 con Java

Utilizza Spark-submit e Java SDK per eseguire ETL con Java.

Utilizzando Spark-submit e Java SDK, completa l'esercitazione, ETL con Java, dall'esercitazione sulla Guida introduttiva a Oracle Cloud Infrastructure Data Flow.
  1. Impostare la tenancy.
  2. Se non si dispone di un bucket nello storage degli oggetti in cui è possibile salvare l'input e i risultati, è necessario creare un bucket con una struttura di cartelle appropriata. In questo esempio, la struttura delle cartelle è /output/.
  3. Esegui questo codice:
    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);
        }
     
      }
    }
    Se si è già eseguito questo tutorial, eliminare il contenuto della directory di output, oci://<bucket-name>@<namespace-name>/output/optimized_listings, per evitare che l'esercitazione non riesca.
    Nota

    Per trovare l'ID compartimento, nel menu di navigazione selezionare Identità e selezionare Compartimenti. I compartimenti disponibili sono elencati, incluso l'OCID di ciascuno.

2: Machine Learning con PySpark

Utilizzando Spark-submit e Java SDK, esegui il Machine Learning con PySpark.

Utilizzando Spark-submit e Java SDK, completa, 3. Machine Learning con PySpark, dall'esercitazione su Introduzione a Oracle Cloud Infrastructure Data Flow.
  1. Esercizio completo 1. ETL con Java, prima di provare questo esercizio. I risultati vengono utilizzati in questo esercizio.
  2. Eseguire il seguente codice:
    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);
        }
     
     
      }
    }

Pagina successiva

Utilizzare Spark-submit e l'interfaccia CLI in altre situazioni.

Puoi utilizzare spark-submit e Java SDK per creare ed eseguire applicazioni Java, Python o SQL con Data Flow ed esplorare i risultati. Data Flow gestisce tutti i dettagli di distribuzione, eliminazione, gestione dei log, sicurezza e accesso all'interfaccia utente. Data Flow ti consente di sviluppare applicazioni Spark senza preoccuparti dell'infrastruttura.