Guía de inicio rápido del uso de Python
En esta guía de inicio rápido, aprenderás a usar el SDK de Apache Beam para Python a fin de compilar un programa que defina una canalización. Luego, deberás ejecutar la canalización mediante un ejecutor local directo o uno basado en la nube, como Dataflow.
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Project > Owner role to the service account.
To grant the role, find the Select a role list, then select Project > Owner.
- Click Continue.
-
Click Done to finish creating the service account.
Do not close your browser window. You will use it in the next step.
-
-
Create a service account key:
- In the Google Cloud console, click the email address for the service account that you created.
- Click Keys.
- Click Add key, and then click Create new key.
- Click Create. A JSON key file is downloaded to your computer.
- Click Close.
-
Configura la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
en la ruta del archivo JSON que contiene tus credenciales. Esta variable solo se aplica a la sesión actual de Cloud Shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the Project > Owner role to the service account.
To grant the role, find the Select a role list, then select Project > Owner.
- Click Continue.
-
Click Done to finish creating the service account.
Do not close your browser window. You will use it in the next step.
-
-
Create a service account key:
- In the Google Cloud console, click the email address for the service account that you created.
- Click Keys.
- Click Add key, and then click Create new key.
- Click Create. A JSON key file is downloaded to your computer.
- Click Close.
-
Configura la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
en la ruta del archivo JSON que contiene tus credenciales. Esta variable solo se aplica a la sesión actual de Cloud Shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable. - Crea un bucket de Cloud Storage:
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
- Haga clic en Crear bucket.
- En la página Crear un bucket, ingresa la información de tu bucket. Para ir al paso siguiente, haz clic en Continuar.
- En Nombre del bucket, ingresa un nombre de bucket único. No incluyas información sensible en el nombre del bucket porque su espacio de nombres es global y públicamente visible.
-
En Elige dónde almacenar tus datos, haz lo siguiente:
- Selecciona una opción de Tipo de ubicación.
- Selecciona una opción de Ubicación.
- Para Elegir una clase de almacenamiento predeterminado para tus datos, selecciona lo siguiente:Estándar.
- En Elige cómo controlar el acceso a los objetos, selecciona una opción de Control de acceso.
- Para la Configuración avanzada (opcional), especifica un método de encriptación, una política de retención o etiquetas de bucket.
- Haga clic en Crear.
- Copia el ID del proyecto de Google Cloud y el nombre del bucket de Cloud Storage. Necesitarás estos valores más adelante en el documento.
Configure su entorno
En esta sección, usa el símbolo del sistema para configurar un entorno virtual de Python aislado a fin de ejecutar tu proyecto de canalización con venv. Este proceso te permite aislar las dependencias de un proyecto de las dependencias de otros proyectos.
Si no tienes un símbolo del sistema disponible, puedes usar Cloud Shell. Cloud Shell ya tiene el administrador de paquetes para Python 3 instalado, por lo que puedes omitir la creación de un entorno virtual.
Para instalar Python y, luego, crear un entorno virtual, sigue estos pasos:
- Verifica que Python 3 y
pip
se estén ejecutando en el sistema:python --version python -m pip --version
- Si es necesario, instala Python 3 y, luego, configura un entorno virtual de Python: sigue las instrucciones proporcionadas en las secciones Instala Python y Configura venv de la página Configura un entorno de desarrollo de Python.
Una vez completada la guía de inicio rápido, puedes ejecutar deactivate
para desactivar el entorno virtual.
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. Debes definir una canalización con un programa de Apache Beam y, luego, elegir un ejecutor, como Dataflow, para ejecutar tu canalización.
Para descargar y, luego, instalar el SDK de Apache Beam, sigue estos pasos:
- Verifica que estés en el entorno virtual de Python que creaste en la sección anterior.
Asegúrate de que el mensaje comience con
<env_name>
, en el queenv_name
es el nombre del entorno virtual. - Instala el estándar de empaquetado de rueda de Python:
pip install wheel
- Instala la versión más reciente del SDK de Apache Beam para Python:
pip install 'apache-beam[gcp]'
Según la conexión, la instalación puede tardar un poco.
Ejecute la canalización de forma local:
Si deseas ver cómo se ejecuta una canalización de manera local, usa un módulo de Python listo para el ejemplo wordcount
que se incluye en el paquete apache_beam
.
La canalización wordcount
de ejemplo realiza lo siguiente:
Toma un archivo de texto como entrada.
Este archivo de texto se encuentra en un bucket de Cloud Storage con el nombre del recurso
gs://dataflow-samples/shakespeare/kinglear.txt
.- Analiza cada línea en palabras.
- Realiza un recuento de frecuencia en las palabras con asignación de token.
Para almacenar en etapa intermedia la canalización wordcount
de forma local, sigue estos pasos:
- Desde tu terminal local, ejecuta el
wordcount
de ejemplo:python -m apache_beam.examples.wordcount \ --output outputs
- Visualiza el resultado de la canalización:
more outputs*
- Para salir, presiona q.
wordcount.py
en GitHub de Apache Beam.
Ejecuta la canalización en el servicio de Dataflow
En esta sección, ejecuta la canalización de ejemplowordcount
desde el paquete apache_beam
en el servicio de Dataflow. En este ejemplo, se especifica DataflowRunner
como parámetro para --runner
.
- Ejecuta la canalización:
python -m apache_beam.examples.wordcount \ --region DATAFLOW_REGION \ --input gs://dataflow-samples/shakespeare/kinglear.txt \ --output gs://STORAGE_BUCKET/results/outputs \ --runner DataflowRunner \ --project PROJECT_ID \ --temp_location gs://STORAGE_BUCKET/tmp/
Reemplaza lo siguiente:
DATAFLOW_REGION
: Es el extremo regional en el que deseas implementar el trabajo de Dataflow, por ejemplo,europe-west1
.La opción
--region
anula la región predeterminada que está configurada en el servidor de metadatos, el cliente local o las variables de entorno.STORAGE_BUCKET
: Es el nombre de Cloud Storage que copiaste antes.PROJECT_ID
por el ID del proyecto de Google Cloud que copiaste antes
Ve los resultados
Cuando ejecutas una canalización con Dataflow, los resultados se almacenan en un bucket de Cloud Storage. En esta sección, debes verificar que la canalización se esté ejecutando mediante Cloud Console o la terminal local.
Cloud Console
Para ver los resultados en Cloud Console, sigue estos pasos:
- En Cloud Console, ve a la página de Jobs.
En la página Trabajos, se muestran detalles del trabajo
wordcount
, incluido un estado En ejecución primero y, luego, Correcto. - Ir a la página Navegador de Cloud Storage
En la lista de buckets de tu proyecto, haz clic en el bucket de almacenamiento que creaste antes.
En el directorio
wordcount
, se muestran los archivos de salida que creó tu trabajo.
Terminal local
Para consultar los resultados de tu terminal, usa la herramienta de gsutil
.
También puedes ejecutar los comandos desde Cloud Shell.
- Obtén una lista de los archivos de salida:
gsutil ls -lh "gs://STORAGE_BUCKET/results/outputs*"
- Observa los resultados en los archivos de salida:
gsutil cat "gs://STORAGE_BUCKET/results/outputs*"
Reemplaza STORAGE_BUCKET
por el nombre del bucket de Cloud Storage que se usó en el programa de canalización.
Modifica el código de canalización
La canalización dewordcount
en los ejemplos anteriores distingue entre palabras en mayúsculas y minúsculas.
En los siguientes pasos, se muestra cómo modificar la canalización, de modo que la canalización wordcount
no distinga entre mayúsculas y minúsculas.
- En tu máquina local, descarga la copia más reciente del código
wordcount
del repositorio de GitHub de Apache Beam. - Desde la terminal local, ejecuta la canalización:
python wordcount.py --output outputs
- Observa los resultados.
more outputs*
- Para salir, presiona q.
- En el editor que prefieras, abre el archivo
wordcount.py
. - Dentro de la función
run
, examina los pasos de la canalización:counts = ( lines | 'Split' >> (beam.ParDo(WordExtractingDoFn()).with_output_types(str)) | 'PairWIthOne' >> beam.Map(lambda x: (x, 1)) | 'GroupAndSum' >> beam.CombinePerKey(sum))
Después de
split
, las líneas se dividen en palabras como strings. - Para convertir en minúsculas las strings, modifica la línea después de
split
:counts = ( lines | 'Split' >> (beam.ParDo(WordExtractingDoFn()).with_output_types(str)) | 'lowercase' >> beam.Map(str.lower) | 'PairWIthOne' >> beam.Map(lambda x: (x, 1)) | 'GroupAndSum' >> beam.CombinePerKey(sum))
Esta modificación asigna la funciónstr.lower
a cada palabra. Esta línea es equivalente abeam.Map(lambda word: str.lower(word))
. - Guarda el archivo y ejecuta el trabajo
wordcount
modificado:python wordcount.py --output outputs
- Visualiza los resultados de la canalización modificada:
more outputs*
- Para salir, presiona q.
Limpia
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
- Haz clic en la casilla de verificación del bucket que deseas borrar.
- Para borrar el bucket, haz clic en Borrar y sigue las instrucciones.
¿Qué sigue?
- Lee sobre el modelo de programación de Apache Beam.
- Desarrolla una canalización de forma interactiva mediante un notebook de Apache Beam.
- Obtén más información sobre cómo diseñar y crear tu propia canalización.
- Lee los ejemplos de WordCount y de videojuegos para dispositivos móviles.