Erste Schritte mit spark-submit und SDK

Ein Tutorial für die ersten Schritte bei der Ausführung einer Spark-Anwendung in Data Flow mit Java-SDK-Code. Verwenden Sie dazu spark-submit mit der Zeichenfolge execute.

Erste Schritte mit spark-submit in Data Flow mit SDK. Befolgen Sie das vorhandene Tutorial Erste Schritte mit Oracle Cloud Infrastructure Data Flow, führen Sie jedoch die spark-submit-Befehle mit dem Java-SDK aus.

Bevor Sie beginnen

Geben Sie die Voraussetzungen ein, bevor Sie spark-submit-befehle in Data Flow mit dem Java-SDK verwenden können.

  1. Richten Sie Ihren Mandanten ein.
  2. Richten Sie Schlüssel ein, und konfigurieren Sie sie.
  3. Erstellen Sie ein Maven-Projekt, und fügen Sie Oracle Cloud Infrastructure-Java-SDK-Abhängigkeiten hinzu:
    <dependency>
      <groupId>com.oracle.oci.sdk</groupId>
      <artifactId>oci-java-sdk-dataflow</artifactId>
      <version>${oci-java-sdk-version}</version>
    </dependency>

1. ETL mit Java

Mit Spark-Submit und Java SDK können Sie ETL mit Java ausführen.

Führen Sie die Übung ETL mit Java aus dem Tutorial Erste Schritte mit Oracle Cloud Infrastructure Data Flow mit Spark-Submit und dem Java-SDK aus.
  1. Richten Sie Ihren Mandanten ein.
  2. Wenn Sie keinen Bucket in Object Storage haben, in dem Sie Ihre Eingabe und Ergebnisse speichern können, müssen Sie einen Bucket erstellen und eine geeignete Ordnerstruktur anlegen. In diesem Beispiel lautet die Ordnerstruktur /output/.
  3. Führen Sie diesen Code aus:
    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);
        }
     
      }
    }
    Wenn Sie dieses Tutorial zuvor ausgeführt haben, löschen Sie den Inhalt des Ausgabeverzeichnisses oci://<bucket-name>@<namespace-name>/output/optimized_listings, um zu verhindern, dass das Tutorial nicht erfolgreich verläuft.
    Hinweis

    Um die Compartment-ID zu suchen, wählen Sie im Navigationsmenü die Option Identität aus, und wählen Sie Compartments aus. Die für Sie verfügbaren Compartments, einschließlich der jeweiligen OCID, werden aufgelistet.

2: Maschinelles Lernen mit PySpark

Führen Sie mit Spark-Submit und dem Java-SDK maschinelles Lernen mit PySpark aus.

Verwenden Sie Spark-Submit und Java-SDK, vollständig, 3. Machine Learning mit PySpark aus dem Tutorial Erste Schritte mit Oracle Cloud Infrastructure Data Flow.
  1. Beenden Sie die Übung 1. ETL mit Java, bevor Sie diese Übung versuchen. Die Ergebnisse werden in dieser Übung verwendet.
  2. Führen Sie den folgenden Code aus:
    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);
        }
     
     
      }
    }

Wie geht es weiter?

Verwenden Sie Spark-Submit und die CLI in anderen Situationen.

Sie können spark-submit und Java-SDK verwenden, um Java-, Python- oder SQL-Anwendungen mit Data Flow zu erstellen und auszuführen und die Ergebnisse zu explorieren. Data Flow verarbeitet alle Details zu Deployment, Ausfall, Logmanagement, Sicherheit und UI-Zugriff. Mit Data Flow können Sie sich auf die Entwicklung von Spark-Anwendungen konzentrieren, ohne sich mit der Infrastruktur befassen zu müssen.