Uruchamianie zapytań federacyjnych w usłudze Amazon Redshift
W tym artykule opisano, jak skonfigurować federację lakehouse, aby uruchamiać zapytania federacyjne na danych z Amazon Redshift, które nie są zarządzane przez Azure Databricks. Aby dowiedzieć się więcej o federacji Lakehouse, zobacz Co to jest Federacja Lakehouse?.
Aby nawiązać połączenie z bazą danych Amazon Redshift i wykonywać zapytania korzystając z federacji lakehouse, należy utworzyć następujące elementy w magazynie metadanych katalogu Unity w Azure Databricks:
- Połączenie z zapytaniami Uruchom w bazie danych Amazon Redshift.
- obcy katalog, który odzwierciedla zapytania wykonywane w bazie danych Amazon Redshift w Unity Catalog, dzięki czemu można używać składni zapytań Unity Catalog i narzędzi do zarządzania danymi w celu kontrolowania dostępu użytkowników Azure Databricks do bazy danych.
Zanim rozpoczniesz
Wymagania dotyczące obszaru roboczego:
- Obszar roboczy włączony dla Unity Catalog.
Wymagania dotyczące obliczeń:
- Łączność sieciowa z Twojego zasobu obliczeniowego do docelowych systemów baz danych. Zobacz Zalecenia dotyczące sieci dla usługi Lakehouse Federation.
- Środowisko obliczeniowe usługi Azure Databricks musi używać środowiska Databricks Runtime 13.3 LTS lub nowszego oraz trybu dostępu współdzielonego lub trybu dostępu jednego użytkownika .
- Magazyny SQL muszą być w wersji pro lub bezserwerowej i muszą używać wersji 2023.40 lub nowszej.
Wymagane uprawnienia:
- Aby utworzyć połączenie, musisz być administratorem magazynu danych Unity Catalog lub użytkownikiem z uprawnieniami
CREATE CONNECTION
w magazynie danych Unity Catalog przypisanym do obszaru roboczego. - Aby utworzyć wykaz obcy, musisz mieć uprawnienie
CREATE CATALOG
w magazynie metadanych i być właścicielem połączenia lub mieć uprawnieniaCREATE FOREIGN CATALOG
w połączeniu.
Dodatkowe wymagania dotyczące uprawnień są określone w każdej sekcji opartej na zadaniach.
Tworzenie połączenia
Połączenie definiuje ścieżkę oraz poświadczenia do uzyskania dostępu do zewnętrznego systemu bazy danych. Aby utworzyć połączenie, możesz użyć Eksploratora wykazu lub polecenia CREATE CONNECTION
SQL w notesie usługi Azure Databricks lub edytorze zapytań SQL usługi Databricks.
Uwaga
Do utworzenia połączenia można również użyć interfejsu API REST usługi Databricks lub interfejsu wiersza polecenia usługi Databricks. Zobacz POST /api/2.1/unity-catalog/connections i polecenia Unity Catalog.
Wymagane uprawnienia: administrator magazynu metadanych lub użytkownik z uprawnieniami CREATE CONNECTION
.
Eksplorator wykazu
W obszarze roboczym usługi Azure Databricks kliknij ikonę katalogu Catalog.
W górnej części okienka katalogu
kliknij ikonę Dodaj lub plus, Ikona Dodaj i wybierz pozycjęDodaj połączenie z menu.Alternatywnie, na stronie szybki dostęp, kliknij przycisk Zewnętrzne dane >, przejdź do karty Połączenia, a następnie kliknij Utwórz połączenie.
Na stronie szczegóły połączenia kreatora Konfigurowanie połączenia wprowadź przyjazną dla użytkownika nazwę połączenia .
Wybierz typ połączenia Redshift.
(Opcjonalnie) Dodaj komentarz.
Kliknij przycisk Dalej.
Na stronie Authentication wprowadź następujące właściwości połączenia dla instancji Redshift.
-
Host: na przykład
redshift-demo.us-west-2.redshift.amazonaws.com
-
Port: na przykład
5439
-
Użytkownik: na przykład
redshift_user
-
Hasło: na przykład
password123
-
Host: na przykład
(Opcjonalnie) Wyłącz weryfikację nazwy hosta SSL.
Kliknij pozycję Utwórz połączenie.
Na stronie Podstawy katalogu wprowadź nazwę katalogu zagranicznego. Wykaz obcy odzwierciedla bazę danych w zewnętrznym systemie danych, dzięki czemu można wykonywać zapytania o dostęp do danych w tej bazie danych i zarządzać nimi przy użyciu usług Azure Databricks i Unity Catalog.
(Opcjonalnie) Kliknij pozycję Testuj połączenie , aby potwierdzić, że działa.
Kliknij Utwórz katalog.
Na stronie Access wybierz obszary robocze, w których użytkownicy mogą uzyskiwać dostęp do utworzonego katalogu. Możesz wybrać pozycję Wszystkie obszary robocze mają dostęplub kliknij Przypisz do obszarów roboczych, wybierz obszary robocze, a następnie kliknij Przypisz.
Zmień właściciela , który będzie mógł zarządzać dostępem do wszystkich obiektów w wykazie. Zacznij wpisywać podmiot w polu tekstowym, a następnie kliknij podmiot w zwróconych wynikach.
Przypisz uprawnienia w katalogu. Kliknij Przyznaj:
- Określ podmioty zabezpieczeń, które będą miały dostęp do obiektów w katalogu. Zacznij wpisywać podmiot w polu tekstowym, a następnie kliknij podmiot w zwróconych wynikach.
- Wybierz ustawienia wstępne uprawnień , aby przyznać każdemu administratorowi. Wszyscy użytkownicy konta domyślnie otrzymują
BROWSE
.- Wybierz z menu rozwijanego opcję Czytnik danych, aby przyznać uprawnienia
read
do obiektów w katalogu. - Wybierz pozycję Edytor danych z menu rozwijanego, aby przyznać
read
imodify
uprawnienia do obiektów w wykazie. - Ręcznie wybierz uprawnienia do udzielenia.
- Wybierz z menu rozwijanego opcję Czytnik danych, aby przyznać uprawnienia
- Kliknij , aby udzielić.
Kliknij przycisk Dalej.
Na stronie Metadane określ pary klucz-wartość tagów. Aby uzyskać więcej informacji, zobacz Zastosuj tagi do obiektów zabezpieczanych w Unity Catalog.
(Opcjonalnie) Dodaj komentarz.
Kliknij Zapisz.
SQL
Uruchom następujące polecenie w notesie lub edytorze zapytań SQL usługi Databricks.
CREATE CONNECTION <connection-name> TYPE redshift
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
Zalecamy używanie sekretów usługi Azure Databricks zamiast ciągów w postaci zwykłego tekstu w przypadku poufnych wartości, takich jak poświadczenia. Na przykład:
CREATE CONNECTION <connection-name> TYPE redshift
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
Aby uzyskać informacje na temat konfigurowania wpisów tajnych, zobacz Zarządzanie wpisami tajnymi.
Tworzenie wykazu obcego
Uwaga
Jeśli używasz interfejsu użytkownika do utworzenia połączenia ze źródłem danych, tworzenie katalogu zewnętrznego zostanie uwzględnione i możesz pominąć ten krok.
Wykaz obcy odzwierciedla bazę danych w zewnętrznym systemie danych, dzięki czemu można wykonywać zapytania o dostęp do danych w tej bazie danych i zarządzać nimi przy użyciu usług Azure Databricks i Unity Catalog. Aby utworzyć wykaz obcy, należy użyć połączenia ze źródłem danych, które zostało już zdefiniowane.
Aby utworzyć wykaz obcy, możesz użyć Eksploratora wykazu lub polecenia CREATE FOREIGN CATALOG
SQL w notesie usługi Azure Databricks lub edytorze zapytań SQL.
Do utworzenia katalogu można również użyć interfejsu API REST usługi Databricks lub interfejsu wiersza polecenia usługi Databricks. Zobacz POST /api/2.1/unity-catalog/catalogs oraz polecenia Unity Catalog .
Wymagane uprawnienia:CREATE CATALOG
uprawnienie do magazynu metadanych i własność połączenia lub CREATE FOREIGN CATALOG
uprawnienia do połączenia.
Eksplorator wykazu
W obszarze roboczym usługi Azure Databricks kliknij ikonę Katalogu Katalog, aby otworzyć Eksploratora Katalogu.
W górnej części okienka katalogu
kliknij ikonę Dodaj lub plus Ikona Dodaj i wybierzDodaj wykaz z menu.Alternatywnie na stronie Szybki dostęp kliknij przycisk Katalogi, a następnie kliknij przycisk Utwórz katalog.
Postępuj zgodnie z instrukcjami dotyczącymi tworzenia katalogów obcych w Tworzenie katalogów.
SQL
Uruchom następujące polecenie SQL w notesie lub edytorze zapytań SQL. Elementy w nawiasach kwadratowych są opcjonalne. Zastąp wartości symboli zastępczych:
-
<catalog-name>
: nazwa wykazu w usłudze Azure Databricks. -
<connection-name>
: obiekt połączenia określający źródło danych, ścieżkę i poświadczenia dostępu. -
<database-name>
: nazwa bazy danych, którą chcesz dublować jako wykaz w usłudze Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
Obsługiwane wypychania
Obsługiwane są następujące wypychania:
- Filtry
- Projekcje
- Limit
- Sprzężenia
- Agregacje (Average, Count, Max, Min, StddevPop, StddevSamp, Sum, VarianceSamp)
- Funkcje (funkcje string i inne różne funkcje, takie jak Alias, Cast, SortOrder)
- Sortowanie
Następujące wypychania nie są obsługiwane:
- Funkcje systemu Windows
Mapowanie typu danych
Podczas odczytywania z narzędzia Redshift do platformy Spark typy danych są mapowe w następujący sposób:
Typ redshift | Typ platformy Spark |
---|---|
numeryczne | Typ dziesiętny |
int2, int4 | Typ liczby całkowitej |
int8, oid, xid | LongType |
float4 | FloatType |
podwójna precyzja, float8, pieniądze | DoubleType |
bpchar, char, znak różny, nazwa, super, tekst, tid, varchar | StringType |
bytea, geometria, varbyte | BinaryType |
bit, bool | Typ logiczny |
data | Typ daty |
tabstime, time, time with time zone, timetz, timetz, time without time zone, timestamp with time zone, timestamp, timestamptz, timestamp* | TimestampType/TimestampNTZType |
*Podczas odczytywania z narzędzia Redshift narzędzie Redshift Timestamp
jest mapowane na platformę Spark TimestampType
, jeśli infer_timestamp_ntz_type = false
(wartość domyślna). Narzędzie Redshift Timestamp
jest mapowane na TimestampNTZType
wartość if infer_timestamp_ntz_type = true
.