Big Data Landscape

There are many projects that make big data possible. If you look at the popular Cloudera or Hortonworks distribution you can see number of tools and frameworks that are ready to fit into existing corporate ecosystem and provide insight into processed data.
This big data ecosystem evolves all the time and because it is in huge majority open source software everyone can participate in developing it. I took a quick look at the GitHub repositories of some Hadoop related projects and generated statistics like number of commits, added or removed lines. This give some picture of the project and the effort involved in making a tool more mature.
Screenshot showing number of commits to big data projects
The projects I choose was rather arbitrary and there are good reasons to go further and keep on adding next repositories. I tried to select those tools that are usually find in Hadoop deployment or can optinally fit into existing big data environments. I divided the projects into several groups:

  • general tools
  • SQL processing tools (+Pig)
  • processing frameworks or libraries
  • big table implementations (HBase, Cassandra, Accumulo)
  • web notebooks (Hue, Zeppelin)
  • integration tools (online or batch)

Of course, you should keep in mind that this is based only on current GitHub repository. Some of the projects were developed earlier in different repositories (for example Hive has much earlier history records than Hadoop itself). Besides that some of the tools were open sourced at some point of time, whereas other started as open software since the very beginning. Nevertheless it can give some overall feeling and easily spot the projects with more intensive development.
Have a look at the this page.

Custom HDFS block size

HDFS stores files split into block. By default blocks are 64MB, however often in production system you can much larger block (i.e. 128MB). This setting is configured by dfs.block.size (or dfs.blocksize) property, usually defined in hdfs-site.xml configuration file.

Custom HDFS block size

It may be surprising that the block size setting can be overridden when executing Hadoop application. For example, when creating new file you can specify different block size than the system-wide defaults.

$ hdfs dfs -D dfs.blocksize=10m -put file.txt /user/kuba/
$ hadoop fsck /user/kuba/file.txt
...
 Total blocks (validated): 19 (avg. block size 10313284 B)
...

Of course this applies not only to console HDFS tools. It’s perfectly OK to create table in Hive that will be loaded with data split into some custom-sized HDFS blocks:

hive> set dfs.blocksize=300m;
hive> create table test_table_small_block_size(<schema...>)
hive> select ... from other_tables;

Some limitations

dfs.blocksize must be a multiplication of dfs.bytes-per-checksum, which by default is set to 512 bytes.
There is a system wide minimal block size defined by dfs.namenode.fs-limits.min-block-size (by default 1048576) and all custom dfs blocks settings must be greater than this value.

References

https://hadoop.apache.org/docs/r2.6.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
 

Popularne na Wikipedii – teraz

W listopadzie uruchomiłem nową stronę umożliwiającą śledzenie prawie na bieżąco najpopularniejszych stron na Wikipedii. Wyniki są obliczane dla języka polskiego, angielskiego oraz niemieckiego i pojawiają się z trzy godzinnym opóźnieniem, bo po takim okresie dane są udostępniane przez dumps.wikimedia.org.
Najpopularniejsze strony na Wikipedii
Dashboard działa już przeszło miesiąc i miałem okazje na bieżąco obserwować jak różne wydarzenia wpływają na aktywność internautów. Co do zasady można przyjąć, że to o czym mówi się w mediach jest popularne także na Wikipedii.
Na przykład w ostatnich tygodniach zamieszanie wokół Trybunału Konstytucyjnego jest jednym z głównych newsów i tak samo na Wikipedii ten temat znajduje się w czołówce najpopularniejszych artykułów.

Mniej oczywiste hity

Czasami jednak niektóre wyniki potrafią zadziwić. Tak się zdarzało na przykład, gdy często w rankingach wygrywał Sulejman Wspaniały. Potem dopiero domyśliłem się, że ma to najprawdopodobniej związek z serialem Wspaniałe stulecie, bo popularność tych artykułów często była ze sobą skorelowana. Zaskoczyła mnie popularność tego serialu – wcześniej o nim w ogóle nie słyszałem.
Wikipedia Sulejman Wspaniały
Ogónie można pokusić się o stwierdzenie, że aktywność na Wikipedii, w pewnym stopniu przynajmniej, ma związek z programem telewizyjnym. Emisji filmu o Jamsie Bondzie w piątek 12 grudniu (TVP 1 – Operacja “Piorum”) towarzyszyły odwiedziny na Wikipedii (art. James Bond był najpopularniejszy w tych godzinach). Z kolei 9 grudnia wieczorem   internauci czytali o Edgarze Hooverze, bo w tym czasie  na TVN 7 emitowany był film biograficzny o tym dyrektorze FBI.

Chwilowe zainteresowanie

Oprócz takich zrozumiałych zjawisk zdarzają się też nagłe hity, których nie potrafię wytłumaczyć. Dla przykładu dwunastego grudnia w południe Wypadek przy pracy był wyświetlany ponad 30 tys. razy (dla porównania zazwyczaj najpopularniejsze artykuły w południe mają liczbę odsłon rzędu 500-700 na godz.) Trudno jednoznacznie powiedzieć jaka historia stała za tymi przypadkami chwilowej popularności.

Belvedere

W tym roku fani Jamsa Bonda są podekscytowani nowym filmem, który 26 października miał swoją światową premierę. Od 6 listopada nowy odcinek przygód agenta Jej Królewskiej Mości będziemy mogli zobaczyć w polskich kinach.
W najnowszym filmie pojawi się polski wątek. Tym razem agent 007 będzie pił polską wódę Belvedere. Nie wiadomo ile producent zapłacił za ten product placement, ale podkreślano, że jest to największa akcja promocyjna zorganizowana do tej pory przez właściciela marki.
W ostatnich dniach największe zainteresowanie tą wódką widać na polskiej Wikipedii. Liczba odsłon w dniu światowej premiery podskoczyła do 1000 (ze 100 odsłon / dzień we wczesniejszych miesiącach). Spory wzrost widać też na niemieckich stronach, a na angielskiej Wikipedii efekt, choć widoczny, był dużo mniejszy.

Popularność arykułu o wódce Belvedere (Wikipedia)

Popularność arykułu o wódce Belvedere (Wikipedia) w dniu premiery Spectre


Ciekawe czy polska premiera wpłynie na jeszcze wieksze zainteresowanie tą marką w Polsce?

Wybory – poparcie w powiatach

Zawsze mnie ciekawią wyniki wyborów przedstawione na mapach i żałuję, że zazwyczaj są to zwykłe obrazki a nie interaktywne prezentacje, po których można byłoby poklikać. Tym razem przygotowałem swoją prezentację wyników,  która pokazuje jak wyglądało poparcie komitetów w poszczególnych powiatach wraz z dodatkowymi szczegółami.

Poparcie Platformy Obywatelskiej

Poparcie Platformy Obywatelskiej


Nadal jest widoczna prawidłość, że Prawo i Sprawiedliść ma większe poparcie na wschodzie Polski, a Platforma Obywatelska w zachdnich województwach. Tym razem jednak widać też, że PiS uzyskał spore poparcie także na obszarze uważanym za tradycyjnie należący do PO.
Pewnym zaskoczeniem może być to, że bastionem Platformy Obywatelskiej z ostatnich wyborów zostało miasto Wałbrzych. Nie wiem dlaczego akurat tam PO zyskało największe poparcie przekraczające 40%. PiS z kolei mogło pochwalić się najlepszym wynikiem w powiecie wyskomazowieckim (ponad 68%).
Poza tym widać jeszcze, że poparcie .Nowoczesnej i Platformy Obywatelskiej wykazują pewne podobieństwa, choć ruch Ryszarda Petru zdecydowanie bardziej jest skumulowany wokół dużych miast.
Dość charakterystyczne jest również niskie poparcie PSL-u na południu Polski.
Poparcie PSL-u

Poparcie PSL-u


[Link do wizualizacji]
 
 

Wieczór wyborczy

Za nami kolejne wybory, znamy już zwycięzców i przegranych. Chciałem zobaczyć, jak wydarzenia ostatnich dni odbiły się na Wikipedii, które nazwiska najbardziej interesowały internautów tuż po zakończeniu ciszy wyborczej i o czym jeszcze czytano podczas wieczoru wyborczego.

Liderzy i wieczór wyborczy

Liderka zwycięskiego ugrupowania była postacią, której stronę na Wikipedii najczęściej czytano po zakończeniu ciszy wyborczej. Artykuł o niej był wyświetlany średnio 3 razy na sekundę, co dało jej pierwsze miejsce.
Na uwagę zasługuje także Ryszard Petru. Lider .Nowoczesnej w rozmowach z dziennikarzami był umiarkowanie zadowolony, bo liczył na większy, dwucyfrowy wynik. Niemniej jednak wprowadził nową formację do Sejmu i wiązało się to ze sporym zainteresowaniem na Wikipedii, które zapewniło mu drugie miejsce wśród najczęściej wyświetlanych stron liderów.
Popularność liderów na Wikipedii tuż po zakończeniu głosowania
Co ciekawe, nie trzeba było być “nad kreską”, żeby wzbudzić zainteresowanie internautów. Barbara Nowcka choć nie zapewniła sobie miejsce w nowym Sejmie to jednak po ogłoszeniu wyników exit poll przyciągała sporo uwagi.

Bohaterowie debat

Liderzy wieczora wyborczego to niekoniecznie te same osoby, które błyszczały podczas ostatniej debaty telewizyjnej. Tamto wydarzenie należało przede wszystkim do Adriana Zandberga, choć sporą popularnością cieszyła się też Barbara Nowacka. Na drugim końcu skali był m.in. lider PSL-u — przez te wszystkie dni Janusz Piechociński miał znikomą liczbę wizyt.
Popularność liderów na Wikipedii w ostatnich dniach kampanii
Kandydatka PiS-u na premiera przeżywała największą popularność już po wyborach. Co ciekawe 27 października, czyli dzień, w którym oficjalnie ogłoszono, że stworzy rząd nie był już tak emocjonującym momentem dla internautów.

Walka o miejsca

Podczas wieczoru wyborczego interesowano się nie tylko partyjnymi liderami, ale takze inne hasła budziły spore zainteresowanie. Przede wszystkim chodzioło o kwestie związane z procesem wyborczym i co tak naprawdę zwycięzca będzie mógł zrobić.
Inne hasła związane z wyborami
Oprócz informacji o samym Sejmie interesowano się więc także metodą przydzielania miejsce w na podstawie liczby głosów (Metoda D-Hondta) oraz, co zrozumiałe, ile wynoszą poszczególne większości (zwykła, bezwzględna i kwalifikowana).

Strachy

Podczas kampanii partie starają się zazwyczaj jak najbardziej wyeksponować swoich kandydatów tak, by zyskać jak najwięcej głosów. Są jednak pewne wyjątki. W tym roku można było odnieść wrażenie, że obóz PiS-u zdecydował, by osobny postrzegane jako najbardziej radykalne nie występowały zbyt często w mediach. Zapewnie chodziło o to aby nie zniechęcać umiarowanego elektoratu, który jest przecież kluczowy do osiągnięcia zwycięstwa. Taką postacią zepchniętą na dalszy plan mógł być Antoni Macierewicz, których choć brał udział w kampanii to w ogólnopolskim przekazie był zdecydowanie wyciszony.
Platformat z kolei straszyła, że zaraz po wyborach stara ekipa łącznie z Antonim Macierewiczem wróci na czołówki. Patrząc na dane z Wikipedii można – pół żartem, pół serio – stwierdzić, że coś w tych obawach było. Pierwszy dzień po wyborach popularność Antoniego Macierewicza zdedydowanie się zwiększyła i była jedną z najwyższych w tym roku.
Popularność strony o Antonim Macierewiczu na Wikiedii
 

Oktoberfest

Oktoberfest is the largest beer and folk festival in the world. In 2013 6.7 million people visited that event. Looking at the total page views on Wikipedia it looks that people read about Oktoberfest mainly in German and English. Other languages especially from neighboring countries were much lower:
oktoberfest

Breweries

It may be surprising, but only beer brewed from Munich local breweries can be served during Oktoberfest. There are six breweries that conform all the criteria and among them Löwenbräu seems to be the most popular on Wikipedia (especially on English pages). Paulaner brewery has also high position in both languages and it has a significant peak of popularity an the beginning of Oktoberfest (along with Hacker-Pschorr).
oktoberfest_breweries

Other Oktoberfest-related readings

There are many other articles on Wikipedia that are linked from Oktoberfest page. Some of them (especially those related to the event) share common popularity patterns with the main article. Lederhosen – the leader breeches worn on Oktoberfest – is one of the examples. Besides that quite popular was Maß, the 1 liter beer mug:
oktoberfest_other
There is one more example of article that got many page views on the beginning of Oktoberfest. That’s Reinheitsgebot, so called beer purity law, regulations which limit the ingredients that can be used in beer:
oktoberfest_purity

Conclusions

One important remark in the end: hundreds or thousands of page views is rather small number when compared with 6.7 million visitors of Oktoberfest (2013), so any conclusions based only on Wikipedia data can be highly inaccurate.

Wypadki drogowe po wakacjach

Wygląda na to, że były to relatywnie bezpieczne wakacja na drogach. W ostatnich miesiacach było zdecydowanie mniej wypadków drogowych niż w poprzednich latach. Przyczyny można się dopatrywać w nowych regulacach wprowadzonych w maju, które m.in. umożliwiają zatrzymywanie prawa jazdy na trzy miesiące za przekroczenie dopuszczalnej prędkości w terenie zabudowanym o 50 km/h.
Liczba wypadków w latach 2012-2015
Choć z początku było rzeczywiście widoczny spadek liczby wypadków, to zdaje się, że była to tylko chwilowa poprawa. W ostatnich tygodniach obserwowaliśmy niamal tyle samo wypadków co w analogicznym okresie w poprzednich lata. Dane ze strony www.policja.pl.
 

Elasticsearch and R

Last month I spent some time working with Elasticsearch and Kibana and I was trying to integrate it with other systems. For example connectiong Elasticsearch wiht Hive is very easy, but I wondered how about reading and saving data from R
Let’s use same NYC data describing vehicle collisions, available here.

Saving data to Elasticsearch

There is a package that makes interaction with ES very easy.

install.packages("elastic")
require(elastic)
connect(es_base = "localhost", es_port = "9200")

Let’s say that collisions is a data frame with our data that will be stored in Elastic. Saving data to the index is a one function call:

docs_bulk(collisions, index = "nyc_collisions")

If the index already exists you can try removing it first when clean upload is neccessary:

index_delete(index = "nyc_collisions")

Mappings

Unfortunately by default all text fields are analyzed, so in our case that can be not usfull for columns describing street:
Aggregating by analyzed text field
To prevent analyzing we need to specify mapping:

index_delete(index = "nyc_collisions")
index_create(index = "nyc_collisions")
mapping_create(index = "nyc_collisions", type = "nyc_collisions", body = '
{
  "nyc_collisions": {
    "properties": {
      "street": { "type": "string", "index": "not_analyzed" }
    }
  }
}')
docs_bulk(collisions, index = "nyc_collisions")

Now we can fully enjoy categorical variable:
Grouping by not analyzed text field

Readeing from Elasticsearch

There is a Search function (with capital “s”) which allows to perform searches on ES and fetch the results into R.

res <- Search(index = "nyc_collisions",
                            q = "manhattan",
                            size = 10,
                            asdf = T)

where q is our query used to filter index, size specifies the number of rectors that will be retrived and asdf means to fetch the data as data frame.
Our final data frame is in res$hits$hits$’_source’:

resdf <- res$hits$hits$'_source'
resdf$date <- as.Date(resdf$date)
summary(resdf)
      date              borough               zip             lat             lon            street              killed
 Min.   :2015-07-12   Length:10          Min.   :10006   Min.   :40.71   Min.   :-74.01   Length:10          Min.   :0  
 1st Qu.:2015-07-14   Class :character   1st Qu.:10025   1st Qu.:40.80   1st Qu.:-73.96   Class :character   1st Qu.:0  
 Median :2015-07-28   Mode  :character   Median :10026   Median :40.80   Median :-73.96   Mode  :character   Median :0  
 Mean   :2015-07-26                      Mean   :10024   Mean   :40.79   Mean   :-73.96                      Mean   :0  
 3rd Qu.:2015-08-05                      3rd Qu.:10027   3rd Qu.:40.81   3rd Qu.:-73.95                      3rd Qu.:0  
 Max.   :2015-08-07                      Max.   :10031   Max.   :40.83   Max.   :-73.95                      Max.   :0  
 pedestrians_injured
 Min.   :0          
 1st Qu.:0          
 Median :0          
 Mean   :0          
 3rd Qu.:0          
 Max.   :0   

Searching gets more complicated when we retrieve only specified fields, not the whole documents. We will have to unlist the list values manually, but it can be necessary to fit bigger datasets into memory.

Powstanie warszawskie

Pierwszego sierpnia obchodzona jest rocznica wybuchu powstania warszawskiego. Co roku jest to widoący temat we wszystkich mediach i niewątpliwie przekłada się to na zainteresowania internautów. Tego dnia czytelników szukających informacji o tym zrywie niepodległościowym jest zdecydowanie najwięcej.
Powstanie warszawskie - odsłony na polskiej Wikipedii
W tym roku odsłon na Wikipedii było o wiele mniej niż w poprzednich latach, ale być może jest to związane z większą znajomościa tematu w społeczeństwie. Poza tym zeszłoroczne obchody okrągłej 70 rocznicy siłą rzeczy mogły być bardziej akcentowane w mediach.
Poza 1 sierpnia artykuł o powstaniu warszawskim jest jeszcze często czytany na początku paździerknika, czyli w rocznicy zakończenia walk. Ta prawidlowość jest jednak dość słaba i pojawiła się dopiero w ostatnich latach.

Powstańcy

Które biografie były najczęściej czytane 1 sierpnia? Spośród 234 kobiet, które walczyły w 1944 roku i zostały opisane na Wikipedii zdecydowanie najwięcej odsłon miała strona Aliny Janowskiej. Poza tym sporo internautów czytało o Krystynie Krahelskiej (zginęła podczas powstania) i o Danucie Szaflarskiej.

Wśród mężczyzn biorących udział w walkach najczęciej czytano o Zbigniewie Ściborze-Rylskim (prawie 3000 odsłon). Sporo osób wspominało też Krzysztofa Kamila Baczyńskiego (ponad 2000 odsłon). Trzecia najczęściej czytana biografia może być pewnym zaskoczeniem — tą postacią był August Agbola O’Brown (715odsłon) i, jak czytamy na Wikipedii, był to jedyny czarnoskóry uczestnik powstania.

Miasto 44

W tym roku po staraniach m.in. Tomasza Lisa niemiecka telewizja publiczna ZDF wyemitowała 2 sierpnia wieczorem film Miasto 44. To wydarzenie było opisywane w pozostałych mediach (np. faz) i cieszyło się, wg opinii niektórych komentatorów, pewnym zainteresowaniem (natemat).
Powstanie warszawskie - odsłony na niemieckiej Wikipedii
Patrząc na odsłony niemieckojęzycznej Wikipedii można znaleźć informacje, iż rzeczywiście w tym roku najwięcej czytelników o powstaniu warszawskim było 2 sierpnia, czyli w dniu emisji filmu, a nie w rocznicę zrywu. Trudno jednak niezauważyć, że zainteresowanie tą tematyką u naszych zachodnich sąsiadów było dużo mniejsze niż np. przed rokiem. Dlatego choć emisja Miasta 44 była zauważona, to jedak nie było to wydarzenie poruszające tłumy telewidzów. Potwierdza to m.in ten raport z wirtualnemedia.pl, który pokazuje, że widzów przed telewizorami było ok. 1 mln, podczas gdy tydzień wcześniej o tej samej porze publiczność była 2,5 raza większa.

wikipediatrends

Chciałem na koniec jeszcze wspomnieć o fantastycznym pakiecie R, który bardzo ułatwia analizę liczby odsłon. Dzięki wikipediatrends możemy w kilku linijkach pobrać zagregowane dane do R bez konieczności obróbki logów z Wikipedii. Jest to spore ułatwienie i nie byłoby to możliwe bez serwisu http://stats.grok.se.

require(wikipediatrend)
pv <- wp_trend(
          page = c("Powstanie_warszawskie", "Warschauer_Aufstand"),
          from = '2010-01-01', to = '2015-08-04',
          lang = c("pl", "de")
      )