Guía de inicio rápido para Python

En esta página se muestra cómo configurar tu entorno de desarrollo de Python, obtener el SDK de Apache Beam para Python y ejecutar y modificar una canalización de ejemplo.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En GCP Console, en la página de selección de proyecto, selecciona o crea un proyecto de GCP.

    Ir a la página de selección de proyecto

  3. Asegúrate de tener habilitada la facturación para tu proyecto de Google Cloud Platform. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. Habilita lasCloud Dataflow, Compute Engine, Stackdriver Logging, Google Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource ManagerAPIAPI.

    Habilita lasAPI

  5. Configurar la autenticación
    1. En GCP Console, ve a la página Crear clave de la cuenta de servicio.

      Ir a la página Crear clave de la cuenta de servicio
    2. En la lista Cuenta de servicio, selecciona Cuenta de servicio nueva.
    3. Ingresa un nombre en el campo Nombre de cuenta de servicio.
    4. En la lista Función, selecciona Proyecto > Propietario.

      Nota: El campo Función autoriza tu cuenta de servicio para acceder a los recursos. Puedes ver y cambiar este campo luego con GCP Console. Si desarrollas una app de producción, especifica permisos más detallados que Proyecto > Propietario. Para obtener más información, consulta Cómo otorgar funciones a las cuentas de servicio.
    5. Haz clic en Crear. Se descargará un archivo JSON a tu computadora que contiene tus descargas de claves.
  6. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS con la ruta de acceso al archivo JSON que contiene la clave de tu cuenta de servicio. Esta variable solo se aplica a tu sesión actual de shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

  7. Crea un depósito de Cloud Storage:
    1. En GCP Console, ve a la página Navegador de Cloud Storage.

      Ir a la página Navegador de Cloud Storage

    2. Haz clic en Crear depósito.
    3. En el diálogo Crear depósito, especifica los siguientes atributos:
      • Nombre: un nombre de depósito único No incluyas información sensible en el nombre del depósito, ya que su espacio de nombres es global y tiene visibilidad pública.
      • Clase de almacenamiento predeterminada:Estándar
      • Una ubicación donde se almacenan los datos del depósito
    4. Haz clic en Crear.

Configura tu entorno

    En esta guía de inicio rápido, se usa un símbolo del sistema. Si no tienes un símbolo del sistema disponible, puedes usar Cloud Shell. Este ya tiene el administrador de paquetes de Python instalado, por lo que puedes omitir el paso 1.

  1. Usa el SDK de Apache Beam para Python con pip y la versión 2.7, 3.5, 3.6 o 3.7 de Python. Ejecuta este comando para comprobar que tengas Python y una instalación pip en funcionamiento:
    python --version
    python -m pip --version
    Si no tienes Python, busca los pasos de instalación para tu sistema operativo en la página de instalación de Python.
  2. Cython no es necesario, pero si está instalado, debes tener la versión 0.28.1 o posterior. Para verificar tu versión de Cython, ejecuta pip show cython.

  3. Instala un entorno virtual de Python para los experimentos iniciales. Si no tienes la versión 13.1.0 o posterior de virtualenv, busca los pasos de instalación para tu sistema operativo en Instala y usa la herramienta virtualenv.

    Ejecuta el comando siguiente para configurar y activar un entorno virtual nuevo:

    python -m virtualenv env
    source env/bin/activate
    Usa un entorno virtual para esta guía de inicio rápido. Una vez completada la guía de inicio rápido, puedes ejecutar deactivate para desactivar el entorno virtual.
Obtén más información sobre cómo usar Python en Google Cloud Platform en la página de configuración de un entorno de desarrollo de Python.

Nota: Para obtener los mejores resultados, inicia las canalizaciones de Python 3 con Apache Beam 2.16.0 o posterior. Para obtener un resumen de las mejoras recientes de Python 3 en Apache Beam, consulta el seguimiento de problemas de Apache Beam.

Obtén el SDK de Apache Beam

El SDK de Apache Beam es un modelo de programación de código abierto para canalizaciones de datos. Las canalizaciones se definen con un programa de Apache Beam y puedes elegir un ejecutor, como Cloud Dataflow, para ejecutar tu canalización.

Instala la versión más reciente del SDK de Apache Beam para Python mediante la ejecución del comando siguiente desde un entorno virtual:

pip install apache-beam[gcp]

Ejecuta WordCount de forma local

El ejemplo de WordCount muestra una canalización que realiza los pasos siguientes:
  1. Toma un archivo de texto como entrada.
  2. Analiza cada línea en palabras.
  3. Realiza un recuento de frecuencia en las palabras con asignación de token.

Ejecuta el módulo wordcount desde el paquete apache_beam en tu máquina local con el comando siguiente:

python -m apache_beam.examples.wordcount \
  --output outputs
Este archivo de texto se encuentra en un depósito de Cloud Storage con el nombre del recurso gs://dataflow-samples/shakespeare/kinglear.txt. Para ver los resultados, ejecuta el comando siguiente:
more outputs*

Para salir, presiona la tecla q.

Ejecutar la canalización de manera local te permite probar y depurar el programa de Apache Beam. Puedes ver el código fuente wordcount.py en GitHub de Apache Beam.

Ejecuta WordCount en el servicio de Cloud᠎ Dataflow

Puedes ejecutar el módulo wordcount desde el paquete apache_beam en el servicio de Cloud Dataflow si especificas DataflowRunner en el campo runner.

Primero, debes definir las variables PROJECT y GCS_BUCKET:

PROJECT=PROJECT_ID
BUCKET=GCS_BUCKET
Para ejecutar esta canalización, ejecuta el comando siguiente:
python -m apache_beam.examples.wordcount \
  --input gs://dataflow-samples/shakespeare/kinglear.txt \
  --output gs://$BUCKET/wordcount/outputs \
  --runner DataflowRunner \
  --project $PROJECT \
  --temp_location gs://$BUCKET/tmp/

Visualiza los resultados con GCP

Cuando ejecutas una canalización con Cloud Dataflow, los resultados se ubican en un depósito de Cloud Storage.

Puedes usar la herramienta gsutil para ver los resultados desde tu terminal.

Ejecuta este comando para crear una lista de los archivos de salida:

gsutil ls -lh "gs://$BUCKET/wordcount/outputs*"  
Ejecuta este comando para ver los resultados en estos archivos:
gsutil cat "gs://$BUCKET/wordcount/outputs*"

Ejecuta este comando para ver los resultados en la IU de supervisión:
  1. Abre la IU de supervisión de Cloud Dataflow.
    Ir a la IU web de Cloud Dataflow

    Verás el trabajo de conteo de palabras con estado En ejecución primero y, luego, Correcto:

    El trabajo WordCount de Cloud Dataflow con estado correcto
  2. Abre el navegador de Cloud Storage en Google Cloud Platform Console.
    Ir al navegador de Cloud Storage

    En el directorio wordcount, deberías ver los archivos de salida que creó tu trabajo:

    Directorio de resultados, con archivos de salida del trabajo de WordCount

Modifica el código de canalización

La canalización de WordCount en los ejemplos anteriores distingue entre palabras en mayúsculas y minúsculas. En la explicación siguiente, se muestra cómo modificar la canalización de WordCount para que no distinga entre mayúsculas y minúsculas.
  1. Descarga la copia más reciente del código WordCount del repositorio de GitHub de Apache Beam.
  2. Ejecuta la canalización en tu máquina local:
    python wordcount.py --output outputs
  3. Observa los resultados mediante la ejecución del comando siguiente:
    more outputs*
    Para salir, presiona la tecla q.
  4. Abre el archivo wordcount.py en el editor que prefieras.
  5. Examina los pasos de la canalización dentro de la función run. Después de split, las líneas se dividen en palabras como strings.
    counts = (lines
              | 'split' >> (beam.ParDo(WordExtractingDoFn())
                            .with_output_types(unicode))
              | 'pair_with_one' >> beam.Map(lambda x: (x, 1))
              | 'group' >> beam.GroupByKey()
              | 'count' >> beam.Map(count_ones))
  6. Modifica la línea después de split para que las strings queden en minúscula.
    counts = (lines
              | 'split' >> (beam.ParDo(WordExtractingDoFn())
                            .with_output_types(unicode))
              | 'lowercase' >> beam.Map(unicode.lower)     # Add this line to modify the pipeline
              | 'pair_with_one' >> beam.Map(lambda x: (x, 1))
              | 'group' >> beam.GroupByKey()
              | 'count' >> beam.Map(count_ones)) 
    Esta modificación asigna la función str.lower a cada palabra. Esta línea es equivalente a beam.Map(lambda word: str.lower(word)).
  7. Guarda el archivo y ejecuta el trabajo modificado de WordCount en tu máquina local:
    python wordcount.py --output outputs
  8. Para ver los resultados de la canalización modificada, ejecuta el comando siguiente:
    more outputs*
    Para salir, presiona la tecla q.

Realiza una limpieza

Sigue estos pasos para evitar que se generen cargos en tu cuenta de GCP por los recursos que usaste en esta guía de inicio rápido:

  1. En GCP Console, ve a la página Navegador de Cloud Storage.

    Ir a la página Navegador de Cloud Storage

  2. Haz clic en la casilla de verificación del depósito que deseas borrar.
  3. Haz clic en Borrar para borrar el depósito.

Próximos pasos

Apache Beam™ es una marca registrada de The Apache Software Foundation y sus afiliados en Estados Unidos o demás países.