Conceitos Básicos do Script Spark-Submit e do SDK

Um tutorial que ajuda a usar o código SDK Java para executar um aplicativo Spark no serviço Data Flow usando o script spark-submit com a string execute.

Comece a usar o script spark-submit no serviço Data Flow usando SDK. Siga o tutorial existente para Conceitos Básicos do Oracle Cloud Infrastructure Data Flow, mas use o Java SDK para executar comandos spark-submit.

Antes de Começar

Cumpra os pré-requisitos para que você possa usar comandos spark-submit no serviço Data Flow com Java SDK.

  1. Configure sua tenancy.
  2. Configure chaves e .
  3. Crie um projeto maven e adicione dependências do Java SDK do 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 com Java

Use o Spark-submit e o Java SDK para executar ETL com Java.

Usando o Spark-submit e o Java SDK, conclua o exercício, ETL com Java, no tutorial Introdução ao Oracle Cloud Infrastructure Data Flow.
  1. Configure sua tenancy.
  2. Se você não tiver um bucket no serviço Object Storage, no qual possa salvar sua entrada e seus resultados, crie um bucket com uma estrutura de pasta adequada. Neste exemplo, a estrutura da pasta é /output/.
  3. Execute este código:
    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 você tiver executado este tutorial antes, exclua o conteúdo do diretório de saída, oci://<bucket-name>@<namespace-name>/output/optimized_listings, para evitar que o tutorial falhe.
    Observação

    Para localizar o id do compartimento, no menu de navegação, selecione Identidade e Compartimentos. Os compartimentos disponíveis para você estão listados, incluindo o OCID de cada um.

2: Aprendizado de Máquina com o PySpark

Usando o script Spark-submit e o SDK Java, execute o machine learning com PySpark.

Usando o Spark-submit e o SDK Java, conclua, 3. Machine Learning com PySpark, no tutorial Conceitos Básicos do Oracle Cloud Infrastructure Data Flow.
  1. Conclua o exercício 1. ETL com Java, antes de tentar este exercício. Os resultados são usados neste exercício.
  2. Execute o seguinte código:
    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);
        }
     
     
      }
    }

O Que Vem a Seguir

Use o script Spark-submit e a CLI em outras situações.

Você pode usar o script spark-submit e o SDK Java para criar e executar aplicativos Java, Python ou SQL com o Data Flow e explorar os resultados. O serviço Data Flow trata de todos os detalhes de implantação, shutdown, gerenciamento de logs, segurança e acesso à interface do usuário. Com o serviço Data Flow, você se concentra no desenvolvimento de aplicativos Spark sem se preocupar com a infraestrutura.