Plantilla de Cloud Storage a Cloud Storage

Usa Dataproc Serverless Cloud Storage para Cloud Storage plantilla para extraer datos de Cloud Storage a Cloud Storage.

Usa la plantilla

Ejecuta la plantilla con gcloud CLI o Dataproc API de gcloud.

gcloud

Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Obligatorio. El ID de tu proyecto de Google Cloud que aparece en la Configuración de IAM
  • REGION: Obligatorio. Región de Compute Engine.
  • SUBNET: Opcional Si no se especifica una subred, se selecciona la subred en la REGION especificada en la red default.

    Ejemplo: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME

  • TEMPLATE_VERSION: Obligatorio. Especifica latest para la versión más reciente de la plantilla o la fecha de una versión específica, por ejemplo, 2023-03-17_v0.1.0-beta (visita gs://dataproc-templates-binaries o ejecuta gcloud storage ls gs://dataproc-templates-binaries para ver una lista de las versiones de plantilla disponibles).
  • CLOUD_STORAGE_INPUT_PATH: Obligatorio. Es la ruta de acceso de Cloud Storage desde la que se leerán los datos de entrada.

    Ejemplo: gs://example-bucket/example-folder/

  • FORMAT: Obligatorio. Formato de los datos de entrada. Opciones: avro, parquet o orc. Nota: Si es avro, debes agregar "file:///usr/lib/spark/external/spark-avro.jar" al campo de la API o la marca de gcloud CLI de jars.

    Ejemplo (el prefijo file:// hace referencia a un archivo jar de Dataproc Serverless):

    --jars=file:///usr/lib/spark/external/spark-avro.jar, [ ... other jars]
  • CLOUD_STORAGE_OUTPUT_PATH: Obligatorio. Es la ruta de acceso de Cloud Storage en la que se almacenará el resultado.

    Ejemplo: gs://example-bucket/example-folder/

  • OUTPUT_FILE_FORMAT: Obligatorio. Formato de datos de salida. Opciones: avro, csv parquet, json o orc. Nota: Si es avro, debes agregar "file:///usr/lib/spark/external/spark-avro.jar" al campo de API o a la marca jars de la CLI de gcloud.

    Ejemplo (el prefijo file:// hace referencia a un archivo jar de Dataproc Serverless):

    --jars=file:///usr/lib/spark/external/spark-avro.jar, [ ... other jars]
  • MODE: Obligatorio. Modo de escritura para la salida de Cloud Storage. Opciones: Append, Overwrite, Ignore o ErrorIfExists.
  • TEMP_TABLE y TEMP_QUERY: Opcional. Puedes usar estos dos parámetros opcionales para aplicar una transformación Spark SQL mientras cargas datos en Cloud Storage. TEMP_TABLE es el nombre de la vista temporal, y TEMP_QUERY es la instrucción de la consulta. TEMP_TABLE y el nombre de la tabla en TEMP_QUERY deben coincidir.
  • SERVICE_ACCOUNT: Opcional Si no se proporciona, se usa la cuenta de servicio de Compute Engine predeterminada.
  • PROPERTY y PROPERTY_VALUE: Opcional. Lista de elementos separados por comas Propiedad de Spark=value pares.
  • LABEL y LABEL_VALUE: Opcional. Lista separada por comas de pares label=value.
  • LOG_LEVEL: Opcional Nivel de registro. Puede ser uno de los siguientes: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE o WARN. Valor predeterminado: INFO.
  • KMS_KEY: Opcional La clave de Cloud Key Management Service que se usará para la encriptación. Si no se especifica una clave, los datos se encriptan en reposo con una clave que es propiedad de Google y está administrada por Google.

    Ejemplo: projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Ejecuta el siguiente comando:

Linux, macOS o Cloud Shell

gcloud dataproc batches submit spark \
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate \
    --version="1.1" \
    --project="PROJECT_ID" \
    --region="REGION" \
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,file:///usr/lib/spark/external/spark-avro.jar" \
    --subnet="SUBNET" \
    --kms-key="KMS_KEY" \
    --service-account="SERVICE_ACCOUNT" \
    --properties="PROPERTY=PROPERTY_VALUE" \
    --labels="LABEL=LABEL_VALUE" \
    -- --template=GCSTOGCS \
    --templateProperty log.level="LOG_LEVEL" \
    --templateProperty project.id="PROJECT_ID" \
    --templateProperty gcs.gcs.input.location="CLOUD_STORAGE_INPUT_PATH" \
    --templateProperty gcs.gcs.input.format="INPUT_FILE_FORMAT" \
    --templateProperty gcs.gcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" \
    --templateProperty gcs.gcs.output.format="OUTPUT_FILE_FORMAT" \
    --templateProperty gcs.gcs.write.mode="MODE" \
    --templateProperty gcs.gcs.temp.table="TEMP_TABLE" \
    --templateProperty gcs.gcs.temp.query="TEMP_QUERY"

Windows (PowerShell)

gcloud dataproc batches submit spark `
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate `
    --version="1.1" `
    --project="PROJECT_ID" `
    --region="REGION" `
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,file:///usr/lib/spark/external/spark-avro.jar" `
    --subnet="SUBNET" `
    --kms-key="KMS_KEY" `
    --service-account="SERVICE_ACCOUNT" `
    --properties="PROPERTY=PROPERTY_VALUE" `
    --labels="LABEL=LABEL_VALUE" `
    -- --template=GCSTOGCS `
    --templateProperty log.level="LOG_LEVEL" `
    --templateProperty project.id="PROJECT_ID" `
    --templateProperty gcs.gcs.input.location="CLOUD_STORAGE_INPUT_PATH" `
    --templateProperty gcs.gcs.input.format="INPUT_FILE_FORMAT" `
    --templateProperty gcs.gcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" `
    --templateProperty gcs.gcs.output.format="OUTPUT_FILE_FORMAT" `
    --templateProperty gcs.gcs.write.mode="MODE" `
    --templateProperty gcs.gcs.temp.table="TEMP_TABLE" `
    --templateProperty gcs.gcs.temp.query="TEMP_QUERY"

Windows (cmd.exe)

gcloud dataproc batches submit spark ^
    --class=com.google.cloud.dataproc.templates.main.DataProcTemplate ^
    --version="1.1" ^
    --project="PROJECT_ID" ^
    --region="REGION" ^
    --jars="gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar,file:///usr/lib/spark/external/spark-avro.jar" ^
    --subnet="SUBNET" ^
    --kms-key="KMS_KEY" ^
    --service-account="SERVICE_ACCOUNT" ^
    --properties="PROPERTY=PROPERTY_VALUE" ^
    --labels="LABEL=LABEL_VALUE" ^
    -- --template=GCSTOGCS ^
    --templateProperty log.level="LOG_LEVEL" ^
    --templateProperty project.id="PROJECT_ID" ^
    --templateProperty gcs.gcs.input.location="CLOUD_STORAGE_INPUT_PATH" ^
    --templateProperty gcs.gcs.input.format="INPUT_FILE_FORMAT" ^
    --templateProperty gcs.gcs.output.location="CLOUD_STORAGE_OUTPUT_PATH" ^
    --templateProperty gcs.gcs.output.format="OUTPUT_FILE_FORMAT" ^
    --templateProperty gcs.gcs.write.mode="MODE" ^
    --templateProperty gcs.gcs.temp.table="TEMP_TABLE" ^
    --templateProperty gcs.gcs.temp.query="TEMP_QUERY"

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Obligatorio. El ID de tu proyecto de Google Cloud que aparece en la Configuración de IAM
  • REGION: Obligatorio. Compute Engine región.
  • SUBNET: Opcional Si no se especifica una subred, esta en la REGION especificada en la red default.

    Ejemplo: projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME

  • TEMPLATE_VERSION: Obligatorio. Especifica latest para la versión más reciente de la plantilla o la fecha de una versión específica, por ejemplo, 2023-03-17_v0.1.0-beta (visita gs://dataproc-templates-binaries o ejecuta gcloud storage ls gs://dataproc-templates-binaries para ver una lista de las versiones de plantilla disponibles).
  • CLOUD_STORAGE_INPUT_PATH: Obligatorio. Es la ruta de acceso de Cloud Storage desde la que se leerán los datos de entrada.

    Ejemplo: gs://example-bucket/example-folder/

  • FORMAT: Obligatorio. Formato de los datos de entrada. Opciones: avro, parquet o orc. Nota: Si es avro, debes agregar "file:///usr/lib/spark/external/spark-avro.jar" al campo de la API o la marca de gcloud CLI de jars.

    Ejemplo (el prefijo file:// hace referencia a un archivo jar de Dataproc Serverless):

    --jars=file:///usr/lib/spark/external/spark-avro.jar, [ ... other jars]
  • CLOUD_STORAGE_OUTPUT_PATH: Obligatorio. Es la ruta de acceso de Cloud Storage en la que se almacenará el resultado.

    Ejemplo: gs://example-bucket/example-folder/

  • OUTPUT_FILE_FORMAT: Obligatorio. Formato de datos de salida. Opciones: avro, csv parquet, json o orc. Nota: Si es avro, debes agregar "file:///usr/lib/spark/external/spark-avro.jar" al campo de API o a la marca jars de la CLI de gcloud.

    Ejemplo (el prefijo file:// hace referencia a un archivo jar de Dataproc Serverless):

    --jars=file:///usr/lib/spark/external/spark-avro.jar, [ ... other jars]
  • MODE: Obligatorio. Modo de escritura para la salida de Cloud Storage. Opciones: Append, Overwrite, Ignore o ErrorIfExists.
  • TEMP_TABLE y TEMP_QUERY: Opcional. Puedes usar estos dos parámetros opcionales para aplicar una transformación Spark SQL mientras cargas datos en Cloud Storage. TEMP_TABLE es el nombre de la vista temporal, y TEMP_QUERY es la instrucción de la consulta. TEMP_TABLE y el nombre de la tabla en TEMP_QUERY deben coincidir.
  • SERVICE_ACCOUNT: Opcional Si no se proporciona, el cuenta de servicio predeterminada de Compute Engine y control sobre el uso de sus datos.
  • PROPERTY y PROPERTY_VALUE: Opcional. Lista de elementos separados por comas Propiedad de Spark=value pares.
  • LABEL y LABEL_VALUE: Opcional. Es una lista separada por comas de pares label=value.
  • LOG_LEVEL: Opcional Nivel de registro. Puede ser uno de los siguientes: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE o WARN. Valor predeterminado: INFO.
  • KMS_KEY: Opcional La clave de Cloud Key Management Service que se usará en la encriptación. Si no se especifica una clave, los datos se encriptan en reposo con una clave que es propiedad de Google y está administrada por Google.

    Ejemplo: projects/PROJECT_ID/regions/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Método HTTP y URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/batches

Cuerpo JSON de la solicitud:


{
  "environmentConfig":{
    "executionConfig":{
      "subnetworkUri":"SUBNET",
      "kmsKey": "KMS_KEY",
      "serviceAccount": "SERVICE_ACCOUNT"
    }
  },
  "labels": {
    "LABEL": "LABEL_VALUE"
  },
  "runtimeConfig": {
    "version": "1.1",
    "properties": {
      "PROPERTY": "PROPERTY_VALUE"
    }
  },
  "sparkBatch": {
    "mainClass": "com.google.cloud.dataproc.templates.main.DataProcTemplate",
    "args": [
      "--template","GCSTOGCS",
      "--templateProperty","project.id=PROJECT_ID",
      "--templateProperty","log.level=LOG_LEVEL",
      "--templateProperty","gcs.gcs.input.location=CLOUD_STORAGE_INPUT_PATH",
      "--templateProperty","gcs.gcs.input.format=INPUT_FILE_FORMAT",
      "--templateProperty","gcs.gcs.output.location=CLOUD_STORAGE_OUTPUT_PATH",
      "--templateProperty","gcs.gcs.output.format=OUTPUT_FILE_FORMAT",
      "--templateProperty","gcs.gcs.write.mode=MODE",
      "--templateProperty","gcs.gcs.temp.table=TEMP_TABLE",
      "--templateProperty","gcs.gcs.temp.query=TEMP_QUERY"
    ],
    "jarFileUris":[
      "gs://dataproc-templates-binaries/TEMPLATE_VERSION/java/dataproc-templates.jar",
      "file:///usr/lib/spark/external/spark-avro.jar"
    ]
  }
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:


{
  "name": "projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dataproc.v1.BatchOperationMetadata",
    "batch": "projects/PROJECT_ID/locations/REGION/batches/BATCH_ID",
    "batchUuid": "de8af8d4-3599-4a7c-915c-798201ed1583",
    "createTime": "2023-02-24T03:31:03.440329Z",
    "operationType": "BATCH",
    "description": "Batch"
  }
}