Udostępnij za pośrednictwem


Importowanie danych do Azure Databricks Lakehouse

Usługa Azure Databricks oferuje różne metody pozyskiwania danych do lakehouse opartego na Delta Lake. W tym artykule wymieniono obsługiwane narzędzia do pozyskiwania danych oraz wskazówki dotyczące wyboru metody na podstawie kryteriów, takich jak źródło danych i opóźnienie.

metody spożycia

Dane można pozyskiwać do usługi Databricks przy użyciu następujących metod:

  • Przetwarzanie wsadowe danych zestawu wierszy na potrzeby rzadkiego przetwarzania
  • Pozyskiwanie przesyłanych strumieniowo danych w postaci pojedynczych wierszy danych lub zestawów wierszy danych w miarę ich napływu do przetwarzania w czasie rzeczywistym

Pozyskane dane są ładowane do tabel delty , które następnie mogą być używane w danych podrzędnych i przypadkach użycia sztucznej inteligencji. Ze względu na architekturę Lakehouse firmy Databricks, nie trzeba duplikować danych w różnych przypadkach użycia, a z Unity Catalog można korzystać w celu scentralizowanej kontroli dostępu, audytowania, śledzenia pochodzenia i odnajdywania danych we wszystkich zasobach.

przyjmowanie wsadowe

Podczas przetwarzania wsadowego dane są ładowane jako zestawy (lub partie) wierszy do Databricks, często na podstawie harmonogramu (na przykład codziennie) lub uruchamiane ręcznie. Reprezentuje to element "wyodrębniania" w tradycyjnych przypadkach użycia procesu wyodrębniania, przekształcania i ładowania (ETL). Możesz użyć importu wsadowego do ładowania danych z:

  • Pliki lokalne, takie jak CSV
  • Magazyn obiektów w chmurze, w tym Amazon S3, Azure Data Lake Storage i Google Cloud Storage
  • Aplikacje SaaS, takie jak Salesforce i bazy danych, takie jak SQL Server

Przetwarzanie wsadowe obsługuje szeroką gamę formatów źródeł plików, w tym CSV, TSV, JSON, XML, Avro, ORC, Parquet i plików tekstowych.

Usługa Databricks obsługuje zarówno tradycyjne przetwarzanie wsadowe, jak i przyrostowe przetwarzanie wsadowe. Podczas gdy tradycyjne pozyskiwanie wsadowe przetwarza wszystkie rekordy przy każdym uruchomieniu, pozyskiwanie przyrostowe wsadowe automatycznie wykrywa nowe rekordy w źródle danych i ignoruje rekordy, które zostały już pozyskane. Oznacza to, że należy przetworzyć mniej danych, a w związku z tym zadania pozyskiwania działają szybciej i wydajniej używają zasobów obliczeniowych.

Tradycyjne jednorazowe przyjmowanie partii

Możesz przekazać pliki danych lokalnych lub pobrać pliki z publicznego adresu URL przy użyciu interfejsu użytkownika dodawania danych. Zobacz Przekazywanie plików.

Inkremantalne przetwarzanie wsadowe

W tej sekcji opisano obsługiwane narzędzia przetwarzania wsadowego przyrostowego.

Tablice strumieniowania

Polecenie CREATE STREAMING TABLE SQL umożliwia ładowanie danych w sposób przyrostowy do tabel przesyłania strumieniowego z magazynu obiektów w chmurze. Zobacz CREATE STREAMING TABLE.

Przykład: przyrostowe ładowanie danych wsadowych z wykorzystaniem tablic strumieniowych

CREATE OR REFRESH STREAMING TABLE customers
AS SELECT * FROM read_files("/databricks-datasets/retail-org/customers/", "csv")
łącznik magazynu obiektów w chmurze

Funkcja automatycznego ładowania, wbudowany łącznik magazynu obiektów w chmurze, umożliwia przyrostowe i wydajne przetwarzanie nowych plików danych po ich nadejściu w usłudze Amazon S3 (S3), usłudze Azure Data Lake Storage Gen 2 (ALDS2) lub usłudze Google Cloud Storage (GCS). Zobacz Auto Loader.

Przykład: przyrostowe pozyskiwanie wsadowe przy użyciu automatycznego modułu ładującego

df = spark.readStream.format("cloudFiles")
  .option("cloudFiles.format", "csv")
  .option("rescuedDataColumn", "_rescued_data")
  .schema("/databricks-datasets/retail-org/customers/schema")
  .load("/databricks-datasets/retail-org/customers/")
w pełni zarządzane łączniki

Program Lakeflow Connect udostępnia w pełni zarządzane łączniki do pobierania danych z aplikacji SaaS takich jak Salesforce oraz z bazy danych, takiej jak SQL Server. Łączniki zarządzane są dostępne przy użyciu następujących elementów:

  • Interfejs użytkownika usługi Databricks
  • Interfejs wiersza polecenia usługi Databricks
  • Interfejsy API usługi Databricks
  • Zestawy SDK usługi Databricks
  • Pakiety zasobów Databricks (DAB)

Zobacz Lakeflow Connect.

przetwarzanie strumieniowe

Dzięki pozyskiwaniu danych przesyłanych strumieniowo można stale ładować wiersze danych lub partie wierszy danych w miarę ich generowania, aby można było wykonywać zapytania dotyczące ich nadejścia niemal w czasie rzeczywistym. Transmisja strumieniowa umożliwia wczytywanie danych strumieniowych ze źródeł, takich jak Apache Kafka, Amazon Kinesis, Google Pub/Sub i Apache Pulsar.

Usługa Databricks obsługuje również pozyskiwanie strumieniowe przy użyciu wbudowanych łączników. Te łączniki umożliwiają przyrostowe i wydajne przetwarzanie nowych danych w miarę ich napływu ze źródeł przesyłania strumieniowego. Zobacz Konfigurowanie źródeł danych przesyłania strumieniowego.

Przykład: strumieniowe wczytywanie danych z platformy Kafka

spark.readStream
    .format("kafka")
    .option("kafka.bootstrap.servers", "<server:ip>")
    .option("subscribe", "topic1")
    .option("startingOffsets", "latest")
    .load()

Przetwarzanie wsadowe i strumieniowe za pomocą DLT

Usługa Databricks zaleca używanie DLT do tworzenia niezawodnych i skalowalnych potoków przetwarzania danych. DLT obsługuje zarówno ingestowanie danych wsadowych, jak i przesyłanych strumieniowo, a także mozesz ingestować dane z dowolnego źródła danych obsługiwanego przez Auto Loader.

przykład : przyrostowe pozyskiwanie wsadowe przy użyciu DLT

@dlt.table
def customers():
  return (
    spark.readStream.format("cloudFiles")
      .option("cloudFiles.format", "csv")
      .load("/databricks-datasets/retail-org/customers/")
  )

pl-PL: Przykład: strumieniowe pozyskiwanie danych z platformy Kafka za pomocą biblioteki DLT

@dlt.table
def kafka_raw():
  return (
    spark.readStream
      .format("kafka")
      .option("kafka.bootstrap.servers", "<server:ip>")
      .option("subscribe", "topic1")
      .option("startingOffsets", "latest")
      .load()
  )

harmonogramy przyjmowania

Dane można pozyskiwać jako jednorazową operację, zgodnie z harmonogramem cyklicznym lub stale.

  • W przypadku przypadków użycia przesyłania strumieniowego niemal w czasie rzeczywistym użyj trybu ciągłego.
  • W przypadku scenariuszy pozyskiwania wsadowego pozyskaj dane jeden raz lub ustaw cykliczny harmonogram.

Zobacz Pobieranie z użyciem zadań oraz Wyzwalane vs. tryb potoku ciągłego.

partnerzy ds. przetwarzania danych

Wiele narzędzi innych firm obsługuje pozyskiwanie danych wsadowych lub przesyłanych strumieniowo do usługi Databricks. Usługa Databricks weryfikuje różne integracje innych firm, chociaż kroki konfigurowania dostępu do systemów źródłowych i pozyskiwania danych różnią się w zależności od narzędzia. Aby uzyskać listę zweryfikowanych narzędzi, zobacz partnerów pozyskiwania. Niektórzy partnerzy technologiczni są również opisywani w programie Databricks Partner Connect, który udostępnia interfejs użytkownika, który upraszcza łączenie narzędzi innych firm z danymi typu lakehouse.

wprowadzanie DIY

Usługa Databricks udostępnia ogólną platformę obliczeniową. W związku z tym możesz utworzyć własne łączniki pozyskiwania przy użyciu dowolnego języka programowania obsługiwanego przez usługę Databricks, takiego jak Python lub Java. Możesz również importować i korzystać z popularnych bibliotek łączników typu open source, takich jak narzędzie do ładowania danych, airbyte i debezium.

alternatywy pozyskiwania

Databricks zaleca ingestowanie dla większości przypadków użycia, ponieważ skaluje się, aby obsłużyć duże ilości danych, zapytania o niskie opóźnienia i limity interfejsu API innych firm. Przenoszenie danych kopiuje dane z systemów źródłowych do usługi Azure Databricks, co powoduje zduplikowanie danych, które z czasem mogą stać się nieaktualne. Jeśli nie chcesz kopiować danych, możesz użyć następujących narzędzi:

  • Federacja Lakehouse umożliwia przesyłanie zapytań do zewnętrznych źródeł danych bez przenoszenia danych.
  • Delta Sharing umożliwia bezpieczne udostępnianie danych między platformami, chmurami i regionami.

Jeśli jednak nie chcesz kopiować danych, użyj usługi Lakehouse Federation lub Delta Sharing.

Kiedy używać Delta Sharing

Wybierz Delta Sharing w następujących scenariuszach:

  • Ograniczanie duplikowania danych
  • Wykonywanie zapytań dotyczących najświeższych możliwych danych

Kiedy używać usługi Lakehouse Federation

Wybierz Lakehouse Federation w następujących scenariuszach:

  • Raportowanie ad hoc lub weryfikacja koncepcji pracy nad potokami ETL

Rozważania przy wyborze metody wprowadzania danych

Rozwaga Wskazówki
Źródło danych Jeśli łączniki natywne usługi Lakeflow Connect istnieją dla źródła danych, będzie to najprostszy sposób pozyskiwania danych. W przypadku źródeł danych, które nie są obsługiwane przez usługę Lakeflow Connect, wyodrębnij dane ze źródła, a następnie użyj narzędzia Auto Loader, aby pozyskać dane do usługi Databricks. W przypadku plików lokalnych użyj interfejsu użytkownika usługi Databricks, aby przekazać dane.
Opóźnienie Jeśli chcesz analizować dane niemal w czasie rzeczywistym, użyj przesyłania strumieniowego, aby korzystać z przetwarzania przyrostowego. W przypadku przesyłania strumieniowego dane są dostępne do wykonywania zapytań natychmiast po nadejściu każdego rekordu. W przeciwnym razie użyj pozyskiwania wsadowego.
Przenoszenie danych Jeśli nie możesz skopiować danych z systemów źródłowych do usługi Databricks, użyj usługi Lakehouse Federation lub Delta Sharing.

Migrowanie danych do usługi Delta Lake

Aby dowiedzieć się, jak migrować istniejące dane do usługi Delta Lake, zobacz Migrowanie danych do usługi Delta Lake.

COPY INTO (starsza wersja)

Polecenie CREATE STREAMING TABLE SQL jest zalecaną alternatywą dla starszej wersji polecenia COPY INTO SQL w celu przyrostowego pozyskiwania z magazynu obiektów w chmurze. Zobacz COPY INTO. Aby uzyskać bardziej skalowalne i niezawodne środowisko pozyskiwania plików, Databricks zaleca użytkownikom usługi SQL korzystanie z tabel przesyłania strumieniowego zamiast COPY INTO.

Dodatkowe zasoby

Jaka jest różnica między pozyskiwaniem danych przesyłanych strumieniowo a wsadowym pozyskiwaniem danych przyrostowych?