Spark. Błyskawiczna analiza danych - ebook
Spark. Błyskawiczna analiza danych - ebook
Apache Spark jest oprogramowaniem open source, przeznaczonym do klastrowego przetwarzania danych dostarczanych w różnych formatach. Pozwala na uzyskanie niespotykanej wydajności, umożliwia też pracę w trybie wsadowym i strumieniowym. Framework ten jest również świetnie przygotowany do uruchamiania złożonych aplikacji, włączając w to algorytmy uczenia maszynowego czy analizy predykcyjnej. To wszystko sprawia, że Apache Spark stanowi znakomity wybór dla programistów zajmujących się big data, a także eksploracją i analizą danych.
To książka przeznaczona dla inżynierów danych i programistów, którzy chcą za pomocą Sparka przeprowadzać skomplikowane analizy danych i korzystać z algorytmów uczenia maszynowego, nawet jeśli te dane pochodzą z różnych źródeł. Wyjaśniono tu, jak dzięki Apache Spark można odczytywać i ujednolicać duże zbiory informacji, aby powstawały niezawodne jeziora danych, w jaki sposób wykonuje się interaktywne zapytania SQL, a także jak tworzy się potoki przy użyciu MLlib i wdraża modele za pomocą biblioteki MLflow. Omówiono również współdziałanie aplikacji Sparka z jego rozproszonymi komponentami i tryby jej wdrażania w poszczególnych środowiskach.
W książce:
- API strukturalne dla Pythona, SQL, Scali i Javy
- operacje Sparka i silnika SQL
- konfiguracje Sparka i interfejs Spark UI
- nawiązywanie połączeń ze źródłami danych: JSON, Parquet, CSV, Avro, ORC, Hive, S3 i Kafka
- operacje analityczne na danych wsadowych i strumieniowanych
- niezawodne potoki danych i potoki uczenia maszynowego
Spark: twórz skalowalne i niezawodne aplikacje big data!
Spis treści
Przedmowa
Wprowadzenie
1. Wprowadzenie do Apache Spark - ujednolicony silnik analityczny
- Geneza Sparka
- Big data i przetwarzanie rozproszone w Google
- Hadoop w Yahoo!
- Wczesne lata Sparka w AMPLab
- Czym jest Apache Spark?
- Szybkość
- Łatwość użycia
- Modułowość
- Rozszerzalność
- Ujednolicona analityka
- Komponenty Apache Spark tworzą ujednolicony stos
- Spark MLlib
- Wykonywanie rozproszone w Apache Spark
- Z punktu widzenia programisty
- Kto używa Sparka i w jakim celu?
- Popularność w społeczności i dalsza ekspansja
2. Pobranie Apache Spark i rozpoczęcie pracy
- Krok 1. - pobranie Apache Spark
- Pliki i katalogi Sparka
- Krok 2. - używanie powłoki Scali lub PySparka
- Używanie komputera lokalnego
- Krok 3. - poznanie koncepcji aplikacji Apache Spark
- Aplikacja Sparka i SparkSession
- Zlecenia Sparka
- Etapy Sparka
- Zadania Sparka
- Transformacje, akcje i późna ocena
- Transformacje wąskie i szerokie
- Spark UI
- Pierwsza niezależna aplikacja
- Zliczanie cukierków M&M's
- Tworzenie niezależnych aplikacji w Scali
- Podsumowanie
3. API strukturalne Apache Spark
- Spark - co się kryje za akronimem RDD?
- Strukturyzacja Sparka
- Kluczowe zalety i wartość struktury
- API DataFrame
- Podstawowe typy danych Sparka
- Strukturalne i złożone typy danych Sparka
- Schemat i tworzenie egzemplarza DataFrame
- Kolumny i wyrażenia
- Rekord
- Najczęściej przeprowadzane operacje z użyciem DataFrame
- Przykład pełnego rozwiązania wykorzystującego DataFrame
- API Dataset
- Obiekty typowane i nietypowane oraz ogólne rekordy
- Tworzenie egzemplarza Dataset
- Operacje na egzemplarzu Dataset
- Przykład pełnego rozwiązania wykorzystującego Dataset
- Egzemplarz DataFrame kontra Dataset
- Kiedy używać RDD?
- Silnik Spark SQL
- Optymalizator Catalyst
- Podsumowanie
4. Spark SQL i DataFrame - wprowadzenie do wbudowanych źródeł danych
- Używanie Spark SQL w aplikacji Sparka
- Przykłady podstawowych zapytań
- Widoki i tabele SQL
- Tabele zarządzane kontra tabele niezarządzane
- Tworzenie baz danych i tabel SQL
- Tworzenie widoku
- Wyświetlanie metadanych
- Buforowanie tabel SQL
- Wczytywanie zawartości tabeli do egzemplarza DataFrame
- Źródła danych dla egzemplarzy DataFrame i tabel SQL
- DataFrameReader
- DataFrameWriter
- Parquet
- JSON
- CSV
- Avro
- ORC
- Obrazy
- Pliki binarne
- Podsumowanie
5. Spark SQL i DataFrame - współpraca z zewnętrznymi źródłami danych
- Spark SQL i Apache Hive
- Funkcje zdefiniowane przez użytkownika
- Wykonywanie zapytań z użyciem powłoki Spark SQL, Beeline i Tableau
- Używanie powłoki Spark SQL
- Praca z narzędziem Beeline
- Praca z Tableau
- Zewnętrzne źródła danych
- Bazy danych SQL i JDBC
- PostgreSQL
- MySQL
- Azure Cosmos DB
- MS SQL Server
- Inne zewnętrzne źródła danych
- Funkcje wyższego rzędu w egzemplarzach DataFrame i silniku Spark SQL
- Opcja 1. - konwersja struktury
- Opcja 2. - funkcja zdefiniowana przez użytkownika
- Wbudowane funkcje dla złożonych typów danych
- Funkcje wyższego rzędu
- Najczęściej wykonywane operacje w DataFrame i Spark SQL
- Suma
- Złączenie
- Okno czasowe
- Modyfikacje
- Podsumowanie
6. Spark SQL i Dataset
- Pojedyncze API dla Javy i Scali
- Klasy case Scali i JavaBean dla egzemplarzy Dataset
- Praca z egzemplarzem Dataset
- Tworzenie przykładowych danych
- Transformacja przykładowych danych
- Zarządzanie pamięcią podczas pracy z egzemplarzami Dataset i DataFrame
- Kodeki egzemplarza Dataset
- Wewnętrzny format Sparka kontra format obiektu Javy
- Serializacja i deserializacja
- Koszt związany z używaniem egzemplarza Dataset
- Strategie pozwalające obniżyć koszty
- Podsumowanie
7. Optymalizacja i dostrajanie aplikacji Sparka
- Optymalizacja i dostrajanie Sparka w celu zapewnienia efektywności działania
- Wyświetlanie i definiowanie konfiguracji Apache Spark
- Skalowanie Sparka pod kątem ogromnych obciążeń
- Buforowanie i trwałe przechowywanie danych
- DataFrame.cache()
- DataFrame.persist()
- Kiedy buforować i trwale przechowywać dane?
- Kiedy nie buforować i nie przechowywać trwale danych?
- Rodzina złączeń w Sparku
- Złączenie BHJ
- Złączenie SMJ
- Spark UI
- Karty narzędzia Spark UI
- Podsumowanie
8. Strumieniowanie strukturalne
- Ewolucja silnika przetwarzania strumieni w Apache Spark
- Przetwarzanie strumieniowe mikropartii
- Cechy mechanizmu Spark Streaming (DStreams)
- Filozofia strumieniowania strukturalnego
- Model programowania strumieniowania strukturalnego
- Podstawy zapytania strumieniowania strukturalnego
- Pięć kroków do zdefiniowania zapytania strumieniowego
- Pod maską aktywnego zapytania strumieniowanego
- Odzyskiwanie danych po awarii i gwarancja "dokładnie raz"
- Monitorowanie aktywnego zapytania
- Źródło i ujście strumieniowanych danych
- Pliki
- Apache Kafka
- Niestandardowe źródła strumieni i ujść danych
- Transformacje danych
- Wykonywanie przyrostowe i stan strumieniowania
- Transformacje bezstanowe
- Transformacje stanowe
- Agregacje strumieniowania
- Agregacja nieuwzględniająca czasu
- Agregacje z oknami czasowymi na podstawie zdarzeń
- Złączenie strumieniowane
- Złączenie strumienia i egzemplarza statycznego
- Złączenia między egzemplarzami strumieniowanymi
- Dowolne operacje związane ze stanem
- Modelowanie za pomocą mapGroupsWithState() dowolnych operacji stanu
- Stosowanie limitów czasu do zarządzania nieaktywnymi grupami
- Generalizacja z użyciem wywołania flatMapGroupsWithState()
- Dostrajanie wydajności działania
- Podsumowanie
9. Tworzenie niezawodnych jezior danych za pomocą Apache Spark
- Waga optymalnego rozwiązania w zakresie pamięci masowej
- Bazy danych
- Krótkie wprowadzenie do SQL
- Odczytywanie i zapisywanie informacji w bazie danych za pomocą Apache Spark
- Ograniczenia baz danych
- Jezioro danych
- Krótkie wprowadzenie do jezior danych
- Odczytywanie i zapisywanie danych jeziora danych za pomocą Apache Spark
- Ograniczenia jezior danych
- Lakehouse - następny krok w ewolucji rozwiązań pamięci masowej
- Apache Hudi
- Apache Iceberg
- Delta Lake
- Tworzenie repozytorium danych za pomocą Apache Spark i Delta Lake
- Konfiguracja Apache Spark i Delta Lake
- Wczytywanie danych do tabeli Delta Lake
- Wczytywanie strumieni danych do tabeli Delta Lake
- Zarządzanie schematem podczas zapisu w celu zapobiegania uszkodzeniu danych
- Ewolucja schematu w celu dostosowania go do zmieniających się danych
- Transformacja istniejących danych
- Audyt zmian danych przeprowadzany za pomocą historii operacji
- Wykonywanie zapytań do poprzednich migawek tabeli dzięki funkcjonalności podróży w czasie
- Podsumowanie
10. Uczenie maszynowe z użyciem biblioteki MLlib
- Czym jest uczenie maszynowe?
- Nadzorowane uczenie maszynowe
- Nienadzorowane uczenie maszynowe
- Dlaczego Spark dla uczenia maszynowego?
- Projektowanie potoków uczenia maszynowego
- Wczytywanie i przygotowywanie danych
- Tworzenie zbiorów danych - testowego i treningowego
- Przygotowywanie cech za pomocą transformerów
- Regresja liniowa
- Stosowanie estymatorów do tworzenia modeli
- Tworzenie potoku
- Ocena modelu
- Zapisywanie i wczytywanie modeli
- Dostrajanie hiperparametru
- Modele oparte na drzewach
- k-krotny sprawdzian krzyżowy
- Optymalizacja potoku
- Podsumowanie
11. Stosowanie Apache Spark do wdrażania potoków uczenia maszynowego oraz ich skalowania i zarządzania nimi
- Zarządzanie modelem
- MLflow
- Opcje wdrażania modelu za pomocą MLlib
- Wsadowe
- Strumieniowane
- Wzorce eksportu modelu dla rozwiązania niemalże w czasie rzeczywistym
- Wykorzystanie Sparka do pracy z modelami, które nie zostały utworzone za pomocą MLlib
- Zdefiniowane przez użytkownika funkcje pandas
- Spark i rozproszone dostrajanie hiperparametru
- Podsumowanie
12. Epilog - Apache Spark 3.0
- Spark Core i Spark SQL
- Dynamiczne oczyszczanie partycji
- Adaptacyjne wykonywanie zapytań
- Podpowiedzi dotyczące złączeń SQL
- API wtyczek katalogu i DataSourceV2
- Planowanie z użyciem akceleratorów
- Strumieniowanie strukturalne
- PySpark, zdefiniowane przez użytkownika funkcje pandas i API funkcji pandas
- Usprawnione zdefiniowane przez użytkownika funkcje pandas zapewniające obsługę podpowiedzi typów w Pythonie
- Obsługa iteratora w zdefiniowanych przez użytkownika funkcjach pandas
- Nowe API funkcji pandas
- Zmieniona funkcjonalność
- Obsługiwane języki
- Zmiany w API DataFrame i Dataset
- Polecenia SQL EXPLAIN i DataFrame
- Podsumowanie
Kategoria: | Bazy danych |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-9915-0 |
Rozmiar pliku: | 7,2 MB |