Big Data
Inżynieria przetwarzania dużych zbiorów danych

Opis zadania

Zadanie składa się z dwóch osobnych części. W obu przypadkach nie wolno skorzystać z informacji o całkowitej liczności zbioru danych, którym w tym przypadku będą pliki tekstowe (200000 pustych plików).
  1. Zadanie 1 Do każdego pliku tekstowego należącego do wskazanego zbioru należy wstawić literę "X".
  2. Zadanie 2 Pliki należy ponumerować:
    • Przed nazwą dodać odpowiednią liczbę zajmującą zawsze ustaloną liczbę znaków.
    • Jeśli liczba jest krótsza niż ustalona liczba znaków, to należy dopełnić ją od lewej strony znakiem zero.
    • Dodaną liczbę oddzielić od nazwy znakiem podkreślenia.
    • Kolejność przypisania liczb do plików jest dowolna.
    • W przypadku plików należących do zestawu testowego dla tego zadania, liczby zapisujemy na 7 znakach.
    Przykład:
    Niech dane będą pliki
    	data_a.dat
    	data_b.dat
    	data_c.dat
    	
    Jeśli liczby miały by być zapisywane na 3 znakach, wówczas nazwy powinny zostać zmienione na:
    	001_data_b.dat
    	002_data_a.dat
    	003_data_c.dat
    	
W związku z pewnymi wątpliwościami, przesyłam dodatkowe wyjaśnienia związane z zadaniem.

Zwracam uwagę, iż na samym początku opisu jest zdanie: "W obu przypadkach nie wolno skorzystać z informacji o całkowitej liczności zbioru danych". Tworząc tablicę w której mają Państwo wszystkie nazwy plików i przekazując ją w całości do procesu, łamią Państwo ten warunek. Mając je wszystkie w tablicy, jawnie albo nie, używają Państwo informacji o ich łącznej ilości. Aby wytłumaczyć o co chodzi w zadaniu, proszę przemyśleć takie dwa przykłady.

Przykład 1 (pierwsza część zadania).

Mamy stos kartek. Nie wiemy ile ich jest. Mogę całkowicie losowo podzielić ten stos pomiędzy np. 4 osoby i każdą z nich poprosić o postawienie znaczka "X" na kartce. To daje się zrobić. Zadania te są niezależne, każdy może stawiać znaczek "X" w swoim tempie i zupełnie nie ma znaczenia ile kartek każda z osób dostanie. Tutaj rozmiar stosu niewiele nam daje.

i teraz

Przykład 2 (druga część zadania).

Podobnie jak poprzednio, mamy stos kartek i nie wiemy ile ich jest. Tym razem trzeba je jednak ponumerować od 1 do N, gdzie N jest łącznym rozmiarem stosu. Teraz nie mogę zwyczajnie rozdzielić kartek pomiędzy osoby, gdyż nikt nie będzie wiedział od jakiej wartości ma numerować. Nie mogą też numerować rozpoczynając od 1, 2, 3 i 4 z krokiem co 4, a więc
1 numeruje: 1, 5, 9, 13, ...
2 numeruje: 2, 6, 10, 14, ...
3 numeruje: 3, 7, 11, 15, ...
4 numeruje: 4, 8, 12, 16, ...
Tak by mogło być, gdyby dostali po tyle samo kartek, ale tego nie wiemy.

Podobnie w zadaniu jakie wymyśliłem, żaden z wykonawców nie może mieć informacji całościowej o wszystkich danych.

Jest to odzwierciedlenie rzeczywistej sytuacji, kiedy to ze względu na rozmiar danych, nie możemy mieć całościowej informacji o nich, gdyż nie mieszczą się w pamięci.

W razie pytań zapraszam do kontaktu.

Materiały