Está en la página 1de 6

Laboratorio # 2 GCP

Laren Osorio Toribio


losoriot@uni.pe

Objetivo
El objetivo de este laboratorio es lanzar un job en Spark empleando PySpark con línea de
comando en Cloud Shell sobre el cluster creado en Cloud Dataproc. Se emplea Cloud Storage
en lugar de HDFS como servicio de almacenamiento.

Requerimientos
● GCP Project
● Cloud Console
● Cloud Shell y Editor para realizar el submit del Pyspark Job
● Texto de Project Gutenberg

Procedimiento
1. Ir al servicio Cloud Storage

2. Crear un bucket en Cloud Storage. Como sugerencia utilizar el siguiente nombre:


cs_user_<nap>_tg

(*) Imagen referencial

Observación:
- Location Type: Region
- Location: Utilizar una región cercana al espacio geográfico en el que te
encuentras.
- Tipo de storage para tus datos: Utilizar el Storage del tipo Standard, el cual
es utilizado para almacenamiento de corta duración con mucha frecuencia de
uso

3. Ingresar al bucket y crear la carpeta llamada input . Hacer click en CREATE FOLDER
4. Ingresar a la carpeta input, click en UPLOAD FILES y subir el archivo
text_gutenberg.txt

5. Ir al servicio de Cloud Dataproc

6. Hacer click sobre el cluster creado en el Lab 1:


cluster-dp-<nombre_grupo>-<extension>

7. Hacer click en el botón Activar Cloud Shell

8. Cargará una pantalla en la parte inferior. Click en continuar

9. Al cargar click en el botón Abrir Editor


10. Cargará una pantalla en la parte superior.

11. Click en New Folder

12. Click en File → New File → Coloca el siguiente nombre: user_<nap>_word-count.py

13. Codificar lo siguiente:


#!/usr/bin/env python

'''
Cuenta la cantidad de palabras en un texto determinado usando Spark con
procesamiento
'''

import pyspark
import sys

if len(sys.argv) !=3:
raise Exception("2 argumentos son requeridos: <inputUri> <outputUri>")

inputUri=sys.argv[1]
outputUri=sys.argv[2]

sc=pyspark.SparkContext()
lines = sc.textFile(sys.argv[1])
words = lines.flatMap(lambda line: line.split())
wordCounts=words.map(lambda word:(word,1)).reduceByKey(lambda count1,count2:
count1+count2)
wordCounts.saveAsTextFile(sys.argv[2])
14. Click en File. Click en Save

15. Introducir el siguiente comando en la ventana negra de Cloud Shell


$ gcloud dataproc jobs submit pyspark user_<nap>_word-count.py
--cluster=cluster-dp-<nombre_grupo>_<extension> --region=<region> --
gs://cs_user_<nap>_tg/input/text_gutenberg.txt gs://cs_user_<nap>_tg/output/

$ gcloud dataproc jobs submit pyspark user_lot_word-count.py


--cluster=cluster-dp-g1-2 --region=us-east1 --
gs://cs_user_lot_tg/input/text_gutenberg.txt gs://cs_user_lot_tg/output/

(*) Guiarse de la imagen

16. Se puede revisar el estado de cada job. Hacer click en “Jobs” o Tareas. El color verde
indica que el proceso terminó con éxito.

17. Validar si los datos se encuentran en la carpeta output de Cloud Storage


cs_user_<nap>_tg/output
18. Se puede revisar en la misma consola de Cloud Shell con el comando gsutil seguido
de ls gs://
$ gsutil ls gs://cs_user_<nap>_tg/output

$ gsutil ls gs://cs_user_lot_tg/output

Observación:
Como se observa el resultado se encuentra particionado en dos archivos

19. Se puede unificar ambos archivos con los siguientes comandos:


$ gsutil cp gs://cs_user_<nap>_tg/output/* .

$ gsutil cp gs://cs_user_lot_tg/output/* .

$ cat part-00000 >> part-00001

20. Finalmente para ver el contenido del archivo unificado (part-00000) ingresar el
siguiente comando
$ cat part-00000 | sort -k 2

También podría gustarte