Details zum E-Book

Spark. Błyskawiczna analiza danych. Wydanie II

Spark. Błyskawiczna analiza danych. Wydanie II

Jules S. Damji, Brooke Wenig, Tathagata Das, Denny Lee

E-book

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!

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
  • Titel: Spark. Błyskawiczna analiza danych. Wydanie II
  • Autor: Jules S. Damji, Brooke Wenig, Tathagata Das, Denny Lee
  • Originaler Titel: Learning Spark: Lightning-Fast Data Analytics, 2nd Edition
  • Übersetzung: Robert Górczyński
  • ISBN: 978-83-283-9915-0, 9788328399150
  • Veröffentlichungsdatum: 2023-02-07
  • Format: E-book
  • Artikelkennung: sparb2
  • Verleger: Helion