Getting the File Name in Pig

I have found very useful feature in Pig, that I didn’t know about. Imagine you have the following input data:

input_data/pagecounts-2014-01-01.bz2
input_data/pagecounts-2014-01-02.bz2
input_data/pagecounts-2014-01-03.bz2

Each file has some logs from one day, but the date is hard coded only in file name, it doesn’t exists in the content of the file. When you need to process all files at once and keep the date there is one handy option in the default PigStorage loader:

rows = LOAD 'input_data' USING PigStorage(' ','-tagFile');

The -tagFile option means that an extra column ($0) will be added with the name of the source file for given tuple.

DUMP rows;
...
(pagecounts-2014-01-01.bz2,abc,123)
(pagecounts-2014-01-01.bz2,def,234)
(pagecounts-2014-01-01.bz2,c,45)
(pagecounts-2014-01-02.bz2,abc,123)
(pagecounts-2014-01-02.bz2,def,234)
(pagecounts-2014-01-02.bz2,c,45)
(pagecounts-2014-01-03.bz2,abc,123)
(pagecounts-2014-01-03.bz2,def,234)
(pagecounts-2014-01-03.bz2,c,45)

When you specify the schema in the LOAD statement make sure you add an extra column for file name. Otherwise file name will replace the value of the first column from definition list.

In previous versions of Pig (prior to 0.12) this option was named -tagsource.

Besides -tagFile there is also very useful -tagPath which adds the whole path and file name. This make a job much easier when you are processing for example partitioned Hive table with partition keys embedded in the directory.

The full documentation is here.

Wypadki drogowe

Czekając na brakujące części do klastra znalazłem ciekawą stroną, która przyda się w sam raz na wpis typu small data.

Na statystyka.policja.pl jest wiele ciekawych dokumentów. Z pewnością jeszcze do nich wrócę, ale tym razem chciałem się skupić na rubryce Statystyki Dnia. Są tam podane m.in. liczby wypadków drogowych oraz liczba rannych i zabitych. W archiwum są wyniki od 2008 roku.

Continue reading

My own Hadoop cluster

I spend most of my time at work developing and maintaining processing on Hadoop, and I I’ve become interested in learning how different configurations impact performance. Some tests, like those related to compression and data format you can easily perform on production systems, but there are many other cases in which you would need full control over the cluster.

As a summer hobby project I decided to set up my own little Hadoop cluster. I hope it will be useful in testing various configurations and of course a lot of fun.

Continue reading

Jabłka

Apples
Creative Commons photo shared by net_efect

Ostatnio pojawiła się informacja, że wraz z początkiem sierpnia Rosja wprowadza embargo na polskie owoce i warzywa. Symbolem tego zdarzenia jest jabłko, produkt nr 1 wśród owoców eksportowanych na rosyjski rynek. Tego typu ograniczenia w handlu pojawiają się nie po raz pierwszy, ale tym razem spotkały się z wyjątkową reakcją.

Przy okazji mogliśmy się dowiedzieć, że właśnie w Polsce jabłka to 70% wszystkich wyhodowanych owoców i że w zeszłym roku eksport jabłek wyniósł 1,2 mln ton, z czego ponad połowa trafiła do Rosji.

Continue reading