Show Menu
Cheatography

Apache Pig - 2. czesc Cheat Sheet (DRAFT) by

Materiały do szkolenia KDM

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Projekcje, przeks­zta­lcenia

Zapis z tabeli A do tabeli B kolumn col1 i col2
B = foreach A generate col1, col2;
Zapis z tabeli A do tabeli B kolumn col1 i col2 (odnie­sienie po numerze kolumny)
B = foreach A generate $0,$1;
Zapis z tabeli A do tabeli B kolumn od col1 do col2 (odnie­sienie po numerze kolumny)
B = foreach A generate $0..$1;
Zapis z tabeli A do tabeli B kolumn do col2 (odnie­sienie po numerze kolumny)
B = foreach A generate ..$1;
A = load 'input.tsv' as (col1:­cha­rarray, col2:long, col3:int);
B = ...

Ograni­czanie liczby wierszy

Próbka 50% z tabeli A
B = sample A 0.5;
10 wierszy z tabeli A
B = limit A 10;

Filtro­wanie wierszy

Odfilt­rowanie wierszy z wartoś­ciami większymi niż zadana
B = filter A by year>2000;
j.w., rozbud­owany przykład
B = filter A by (year > 2000 and year < 2010);
Odfilt­rowanie wierszy z wartoś­ciami niepustymi
B = filter A by descri­ption is not null;
Odfilt­rowanie wierszy z tekstami spełni­ającymi zadane wyrażenie regularne
B = filter A by text MATCHES '.Miami.';

Operacje masowe

Grupowanie wierszy mających tę samą wartość kolumny col1
B = group A by col1;
Grupowanie wierszy mających te same wartości kolumn col1 i col2
B = group A by (col1,­col2);
Grupowanie wszystkich wierszy
B = group A all;
Sortowanie wierszy rosnąco wg. wartości kolumny col1
B = sort A by col1 asc;
Sortowanie wierszy malejąco wg. wartości kolumny col1
B = sort A by col1 desc;
Rankin­gowanie wierszy rosnąco wg. wartości col1
B = rank A by col1 asc;

Operacje na kolumnach zawier­ajacych tekst

Podzial tekstu na słowa
B = foreach A generate id, TOKENI­ZE(txt) as tokens;
bag:{(­cha­rar­ray)} TOKENI­ZE(­cha­rarray)
Podział tekstu na określoną liczbę fragmentów względem znaku podziału
B = foreach A generate id, STRSPL­IT(­txt­,',',2) as tup;
tuple STRSPL­IT(­cha­rar­ray­,ch­ara­rra­y,int)
Usunięcie wiodących i kończących białych znaków
B = foreach A generate TRIM(txt) as txt;
chararray TRIM(c­har­array)
Wyciąg­nięcie tekstu spełni­ającego zadane wyrażenie regularne
B = foreach A generate REGEX_­EXT­RAC­T(t­xt,­'([­0-9­]+)',1) as txt;
chararray REGEX_­EXT­RAC­T(c­har­array, regex, group num)
Operacje przeks­zta­łcające kolumny tekstowe

Splasz­czanie kolekcji

B = group A by col1;
-- B:{group,A:{(col1)}}
C = foreach B generate group, flatten(A);
-- C:{group, col1}

D = foreach B generate A as bag1, A as bag2;
E = foreach D generate FLATTEN(bag1) as t1,  FLATTEN(bag1) as t2;
-- E:{t1,t2}
-- wiersze w tabeli E reprezentują wszystkie możliwe pary obiektów z bag1 oraz bag2 (produkt kartezjański)

Operacja na grupach wierszy z kolumnami liczbowymi

A = load 'input.tsv' as (id1:long,val:long);
B = group A all;

-- wartość średnia, maksymalna, minimalna dla kolumny val
C = foreach B generate AVG(A.val);
D = foreach B generate MAX(A.val);
E = foreach B generate MIN(A.val);

-- liczba wierszy w tabeli A.
-- wszystkie wiersze z tabeli A zostały umieszczone w jednym bag-u o nazwie A umieszczonym w wierszu w tabeli B.
-- Wynik zliczenia elementów z bag-a zostanie umieszczony w tabeli C
C = foreach B generate COUNT(A) as cnt;

Makra

DEFINE COUNTALL(intable) RETURNS out{
  grpd = group $intable all;
  $out = foreach grpd generate COUNT($intable);
}

A = load ...
B = COUNTALL(A);
Pig umożliwia zdefin­iowanie części kodu jako makra
i odwoły­wanie się do niego przez nazwę

Import skryptow z makrami

import 'macros.pig';

A = load ...
B = MACRO_FROM_OTHER_FILE(A);
Pig umożliwia zaimpo­rto­wanie do skryptu Pigowego innych skryptów Pigowych,
które np. zawierają makra.
Skrypty import­owane NIE MOGĄ ZAWIERAĆ operacji REGISTER.