Sie sind auf Seite 1von 4

Descripción de comandos de uso de pig.

1) Instalar imagen de docker:

chalimartines/local-pig

2) Instalar contenedor:

sudo docker pull chalimartines/local-pig

Revisar si la imagen quedo instalada:

sudo docker images

3) iniciar contenedor:

sudo docker run --rm -it -v /home/ubuntu/repo/peliculas.csv:/repo/peliculas.csv:rw


chalimartines/local-pig

a) /home/ubuntu/repo/peliculas.csv archivo que se sube al contenedor,


repo es carpeta en mi sistema de archivos (puede ser cualquier carpeta),
peliculas.csv es ela archivo a cargar archivo.

b) :/repo/peliculas.csv:rw carpeta que se crea en el contenedor y almacena el archivo en


modo lecto escritura (rw),repo es la carpeta que se crea en el contenedor.

4) Cargar archivo

pelis = LOAD '/repo/peliculas.csv' USING PigStorage(',') as (id,name,year,rating,duration);

dump pelis;

Ejemplo de carga de archivo con esquema y definición de tipos:

pelis = LOAD '/repo/peliculas.csv' USING PigStorage(',') as (id:chararray, name:chararray,


year:chararray, rating: float, duration:int);

5) Seleccionar columnas

pelis_aa = foreach pelis generate name,id,year;

dump pelis_aa;

6) Ejemplo de filtro.
f1 = filter pelis by (rating>3.0) ;
dump f1;

Filtro con búsqueda de texto

f1 = filter pelis by (rating>3.0 and (name matches 'L.*') ) ;

7) Selección de columnas.
Se tiene este registro:

(49556,Lilyhammer: Season 1 (Recap),2013,4.2,194)


($0, $1,..,$4)

Se hacer referencia a cada columna por el alias $posicion.

obs = foreach f1 generate $1,$2;

Extrae las columnas nombre de pelicula (posición 1 del registro) y año de la pelicula
(posición 2 del registro)

8) Operaciones básicas comunes.

Contar registros.

grp= group pelis all;


conteo = foreach grp generate group, COUNT(pelis);

grp= group pelis all, Es más que crear una variable, es generar una copia de datos
cargados en memoria, específicamente en la variable pelis.

Limitar proyección de los datos.

pelis10 = limit pelis 10;


dump pelis10;

Extraer una muestra.

muestra = sample pelis 0.05;


dump muestra;

Dónde 0.05 significa que se genera una muestra del 5% sobre el total de los datos en el
archivo (variable) pelis.

9) Almacenamiento de procesos generados con Pig.


Almacenar filtro

STORE f1 INTO '/reco/salida' USING PigStorage(',');


O por ejemplo, deseo almacenar la muestra del 5% que genere.

STORE muestra INTO '/reco/salida' USING PigStorage(',');

El comando opera de la forma:

STORE Nombre_variable INTO destino_almacenamiento USING PigStorage(‘,’);

Al ejecutarlo la ultima linea será:


MapReduceLauncher - Success!

Es decir almacenamiento exitoso.


Es posible observar el archivo que se genera como salida:

grunt> cd /reco/salida
grunt> ls
file:/reco/salida/part-m-00000<r 1> 145506
file:/reco/salida/_SUCCESS<r 1> 0

El archivo se llama: /reco/salida/part-m-00000


Es el que finalmente se extraerá del docker.

10) Extraccion de informacion del docker

Se requiere salir del contenedor (ctrl + P + Q)

Verificar el id de la imagen de la cual voy a extraer la información, uso docker ps

sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
b6a97b49d65a chalimartines/local-pig "/run_pig.sh" 2 hours ago Up 2 hours
relaxed_chandrasekhar

sudo docker cp ID_MIREPOSITORIO_PIG:/reco/salida ~/repo/datospig/

Para el ejemplo:
sudo docker cp b6a97b49d65a:/reco/salida ~/repo/datospig/

docker cp 219491d82c26:/raw/salida ~/ejercios/datospig/

11) Subir datos al contenedor pig de docker.

Se tiene el directorio:

~/repo$ ls
Info_dept.csv covidatos.csv datospig fiscalia.csv peliculas.csv prod_cacao_dpt.csv
Deseo subir un archivo al contenedor.

sudo docker cp ~/repo/prod_cacao_dpt.csv ID_CONTENEDOR_PIG:/reco/prod_cacao.csv

No olvidar adaptar el id del contenedor.

sudo docker cp ~/repo/prod_cacao_dpt.csv b6a97b49d65a:/repo/prod_cacao.csv

Das könnte Ihnen auch gefallen