E-book details

Spark. Błyskawiczna analiza danych. Wydanie II

Spark. Błyskawiczna analiza danych. Wydanie II

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

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!

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
  • Title: Spark. Błyskawiczna analiza danych. Wydanie II
  • Author: Jules S. Damji, Brooke Wenig, Tathagata Das, Denny Lee
  • Original title: Learning Spark: Lightning-Fast Data Analytics, 2nd Edition
  • Translation: Robert Górczyński
  • ISBN: 978-83-283-9915-0, 9788328399150
  • Date of issue: 2023-02-07
  • Format: Ebook
  • Item ID: sparb2
  • Publisher: Helion