
Apache Flink - przetwarzanie danych
Domyślnym sposobem tworzenia aplikacji Apache Flink jest użycie Flink SQL. Ułatwia on tworzenie aplikacji przetwarzania strumieniowego przy użyciu standardowego SQL. Łatwo jest nauczyć się Flink, jeśli kiedykolwiek pracowałeś z bazą danych lub systemem podobnym do SQL, zgodnym z ANSI-SQL 2011.
Podobnie jak w przypadku wszystkich silników SQL, zapytania Flink działają na szczycie tabel. Różnią się one jednak od tradycyjnej bazy danych, ponieważ Flink nie zarządza danymi składowanymi w statycznych tabelach; zamiast tego jego zapytania działają w sposób ciągły na danych zewnętrznych (z tabel baz danych lub plików powstają tabele dynamiczne w programie Flink a po przetworzeniu danych mogą być z powrotem zapisane do tradycyjnych tabel baz danych i do plików).
Potoki przetwarzania danych Flink zaczynają się od danych źródłowych. Dane źródłowe tworzą wiersze obsługiwane podczas wykonywania zapytania; są to dynamiczne tabele Flink, do których odwołuje się klauzula FROM zapytania. Mogą to być topiki Kafki, bazy danych, systemy plików lub dowolny inny system z którego Flink wie jak korzystać.
Zanim zaczniesz czytać dalej, upewnij się że przeczytałe(a)ś wcześniejsze artykuły jak zainstalować Apache Flink [uruchomienie-apache-flink-w-windows] i jak utworzyć pierwszą aplikację w tym środowisku [pierwsza-transformacja-w-apache-flink]
Raz jeszcze: tabele dynamiczne Flink nie są tabelami baz danych - powstają one poprzez odczytanie tabel baz danych [np MySQL, Oracle], plików [np. CSV] lub pochodzą z innych źródeł [np. Kafka]. Flink używa swoich własnych tabel - przeczytaj o nich więcej na stronie Apache Flink

Tworzymy pierwszą transformację w Apache Flink
Programy i przepływy danych
Podstawowymi programami w Apache Flink są strumienie i transformacje. Koncepcyjnie strumień jest (potencjalnie niekończącym się) przepływem rekordów danych, a transformacja jest operacją, która pobiera jeden lub więcej strumieni wejściowych (źródło) i w rezultacie generuje jeden lub więcej strumieni wyjściowych. W krokach opisanych poniżej stworzymy transformację - batch który pobierze informacje z jednego źródła i zapisze informacje do innego miejsca (nazywanych we Flink 'sinks').
Język i środowisko
Programy Flink można pisać w trzech językach; Scala, Java, Python. Ponieważ Flink napisany jest w Scala, ten język jest najbardziej naturalny. Kodowanie w Java jest także wygodne. Pisanie programów Flik w Python nie jest zbyt wygodne (wymagany interfejs miedzy programem Python a Flink).
Nasz pierwszy program napiszemy w Java. Środowiskiem w którym go stworzymy będzie Eclipse IDE. Program można pobrać ze strony Eclipse - https://www.eclipse.org/ide/.
Opis instalacji i konfiguracji Flink znajdziesz we artykule "Uruchomienie Apache Flink w Windows"

Uruchomienie Apache Flink w Windows
Jak zainstalować Apache Flink w środowisku Windows.
Czym jest Apache Flink pewnie wiesz skoro to czytasz. Dla tych którzy tego nie wiedzą: Apache Flink to otwarta, ujednolicona platforma przetwarzania strumieniowego i przetwarzania wsadowego opracowana przez Apache Software Foundation. Rdzeniem Apache Flink jest rozproszony silnik przepływu danych strumieniowych napisany w Javie i Scali. Flink wykonuje dowolne programy przepływu danych w sposób równoległy i potokowy.
Flink do wersji 1.7.X zawierał w katalogu 'bin' plik 'start-cluster.bat' który pozwalał na uruchomienie Flink w środowisku. Nowe wersje nie zawierają tego pliku - Flink musi być uruchomiony w inny sposób.
Co jest potrzebne do uruchomienia Flink?
GitHub CLI (command line interface)
Instalacja Java
Zainstaluj JRE lub JDK w wersji 11. Flink powinien działać nadal z wersją 8 ale nie jest już oficjalnie wspierana przez nich. Funkcjonowanie z wersją 17 jest w opracowaniu. Utwórz zmienną JAVA_HOME w systemie.
Pobieranie Flink
Pobierając Apache Flink, wybierz "binaries" ze strony produktu a następnie plik z rozszerzeniem 'tgz' (zwykle piewszy z góry), np: 'flink-1.15.0-bin-scala_2.12.tgz'
Rozpakuj flink do docelowego katalogu np. "C:\dev\flink-1.13.6\"
Pobranie GitHub CLI
Pobierając GitHub CLI możesz poprzestać na wersji portable - nie musisz instalować tego programu na stałe. Rozpakuj program do docelowego katalogu:

Tworzymy pierwszy potok i przepływ w Apache Hop
Z artykułu Pierwsze kroki w Apache Hop dowiedziałe(a)ś się podstaw o Apache Hop i jak zaprojektowane jest środowisko tego ETL. W tym artykule dowiesz się jak stworzyć pierwszy potok i jak wykorzystać go w przepływie pracy.
Budujemy potok
Zbudujemy bardzo proste zadanie w ETL które otworzy plik, dokona odpowiednich zmian, zapisze zmienione dane i przekopiuje plik do docelowego katalogu. Zadanie jest trywialne ale tworząc je, będziesz mieć okazję do zapoznania się z programem. To powzwoli Ci zrozumieć na czym polega budowanie projektów w Apache Hop.
Potok to ciąg zadań. W naszym przypadku otworzy plik, zmieni dane, zapisze zmienione dane do pliku. Trzy różne zadania, nazwane w Hop transformacjami połączone przeskokami. W Hop organizujemy nasze prace w projekty a każdy z projektów ma swoje środowisko pracy. Projekt jest kontenerem wskazującym na konkretny katalog na dysku w którym będą nasze potoki i przepływy (o przepływach później).
Tworzymy projekt i środowisko projektu
Uruchamiamy GUI naszego ETL poprzez wykonanie pliku 'hop-gui.bat' w Windows lub 'hop-gui.sh' w Linux. Po otwarciu programu po prawej stronie pola z nazwą projektu masz ikonę 'p+'. Kliknij ją by utworzyć nowy projekt.
Wpisz nazwę projektu, tutaj mamy "Testowy projekt", i wskaż gdzie znajdować się będzie folder projektu. Kliknij OK. Mamy utworzony projekt. Następnym zadaniem jest utworzenie środowiska. Środowisko zawiera ustawienia które będą wykorzystywane przez nasze potoki i przepływy pracy. Np. połączenie do bazy danych. Dzięki temu zmieniając środowisko z którego korzystasz w danym przepływie czy potoku, łączysz się do różnych baz danych bez konieczności przepisywania transformacji. Używasz tego min. do łączenia się ze środowiskiem testowym lub produkcyjnym. Możesz też szybciej zbudować nowy potok bez konieczności ponownej definicji bazy danych.