Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Na tej stronie opisano sposób konfigurowania federacji lakehouse w celu uruchamiania zapytań federacyjnych na danych Oracle, które nie są zarządzane przez usługę Azure Databricks. Aby dowiedzieć się więcej o federacji Lakehouse, zobacz Łączenie z zewnętrznymi bazami danych i katalogami
Aby nawiązać połączenie z bazą danych Oracle przy użyciu Lakehouse Federation, musisz utworzyć następujące elementy w magazynie metadanych Katalogu Unity usługi Azure Databricks (obszary robocze utworzone po 9 listopada 2023 r. mają już automatycznie aprowizowany magazyn metadanych wykazu Unity):
- Połączenie z bazą danych Oracle.
- katalog obcy, który dubluje bazę danych Oracle w Unity Catalog, dzięki czemu można użyć składni zapytań Unity Catalog i narzędzi do zarządzania ładem danych, aby zarządzać dostępem użytkowników do bazy danych Azure Databricks.
Limitations
Federacja lakehouse obsługuje tylko połączenia Tls (Transport Layer Security) z usługą Oracle Cloud. Połączenia z innymi bazami danych Oracle używają natywnego szyfrowania sieciowego (NNE).
Istnieje znany problem podczas nawiązywania połączenia z wystąpieniami 11.2.0.3.0 i nowszych, które nie mają wartości strefy czasowej
Etc/UTC(Błąd:ORA-01882: timezone region not found).- Obejście: ustaw
spark.databricks.connector.oracle.timezoneAsRegionnafalse. To odpowiada bezpośrednio właściwości sterownika JDBCoracle.jdbc.timezoneAsRegion. W przypadku obliczeń klasycznych tę konfigurację można ustawić w konfiguracji klastra Spark. W przypadku magazynów SQL usługi Databricks i bezserwerowych zasobów obliczeniowych skontaktuj się z pomocą techniczną Azure Databricks, aby zastosować to ustawienie.
- Obejście: ustaw
Warning
To obejście problemu może powodować nieprawidłowe działanie czasu letniego (DST). Aby uzyskać stałą poprawkę, zaktualizuj pliki strefy czasowej bazy danych Oracle. Zobacz Pomoc techniczna oracle — ORA-01882.
License
Sterownik Oracle i inne niezbędne pliki jar Oracle są objęte licencją FDHUT typu "no-clickthrough".
Przed rozpoczęciem
Przed rozpoczęciem upewnij się, że spełniasz wymagania w tej sekcji.
Wymagania dotyczące usługi Databricks
Wymagania dotyczące obszaru roboczego:
- Obszar roboczy włączony dla Unity Catalog. Obszary robocze utworzone po 9 listopada 2023 r. są automatycznie włączane dla Unity Catalog, w tym automatyczne aprowizowanie metastore. Nie musisz tworzyć metastore'u ręcznie, chyba że obszar roboczy został stworzony przed automatycznym włączeniem i nie został włączony dla Unity Catalog. Zobacz Rozpocznij pracę z Unity Catalog.
Wymagania dotyczące obliczeń:
- Łączność sieciowa od zasobu obliczeniowego do docelowych systemów baz danych. Zobacz Zalecenia sieciowe dla Lakehouse Federation.
- Środowisko obliczeniowe usługi Azure Databricks musi używać środowiska Databricks Runtime w wersji 16.1 lub nowszej i Standard lub Dedykowane trybu dostępu.
- Magazyny SQL muszą być w wersji pro lub bezserwerowej i muszą używać wersji 2024.50 lub nowszej.
Wymagane uprawnienia:
- Aby utworzyć połączenie, musisz być administratorem magazynu metadanych lub użytkownikiem z uprawnieniami
CREATE CONNECTIONw magazynie metadanych Unity Catalog dołączonym do obszaru roboczego. W obszarach roboczych, które zostały automatycznie włączone do katalogu Unity, administratorzy obszaru roboczego mają domyślnie uprawnienieCREATE CONNECTION. - Aby utworzyć katalog zewnętrzny, musisz mieć uprawnienie
CREATE CATALOGw magazynie metadanych i być właścicielem połączenia lub mieć uprawnienieCREATE FOREIGN CATALOGdla połączenia. W obszarach roboczych, które zostały automatycznie włączone do katalogu Unity, administratorzy obszaru roboczego mają domyślnie uprawnienieCREATE CATALOG.
Dodatkowe wymagania dotyczące uprawnień są określone w każdej sekcji tematycznej dotyczącej zadań.
Wymagania oracle
W przypadku połączeń korzystających z natywnego szyfrowania sieci (Native Network Encryption), należy włączyć NNE po stronie serwera na poziomie minimalnym ACCEPTED. Zobacz Konfigurowanie szyfrowania danych sieciowych w dokumentacji oracle. Nie dotyczy to połączeń Oracle Cloud, które zamiast tego używają protokołu TLS.
Tworzenie połączenia usługi Azure Databricks
Połączenie określa ścieżkę i poświadczenia dostępu do zewnętrznego systemu bazodanowego. 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.
Note
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 oraz polecenia w Unity Catalog.
Wymagane uprawnienia: administrator magazynu metadanych lub użytkownik z uprawnieniami CREATE CONNECTION.
Eksplorator wykazu
- W obszarze roboczym usługi Azure Databricks kliknij
Wykaz.
- Kliknij
Połącz, a następnie kliknij Połączenia.
- Kliknij przycisk Utwórz połączenie .
- Na stronie
Podstawowych informacji o połączeniu kreatoraKonfigurowanie połączenia , wprowadź nazwę połączenia przyjazną dla użytkownika. - Wybierz typ połączenia z Oracle .
- (Opcjonalnie) Dodaj komentarz.
- Kliknij przycisk Dalej.
- Na stronie Authentication wprowadź następujące informacje dla instancji Oracle:
-
Host: na przykład
oracle-demo.123456.rds.amazonaws.com -
port: na przykład
1521 -
użytkownik: na przykład
oracle_user -
hasło: na przykład
password123 -
Protokół szyfrowania:
Native Network Encryption(ustawienie domyślne) lubTransport Layer Security -
Certyfikat serwera dostarczonego przez użytkownika: opcjonalnie. Publiczny certyfikat Twojej instancji Oracle zakodowany przez PEM, używany do weryfikacji tożsamości serwera podczas handshake TLS. Udostępnij go, gdy serwer prezentuje certyfikat od prywatnego lub wewnętrznego urzędu certyfikacyjnego, który nie znajduje się w domyślnym magazynie zaufania. Certyfikat serwera dostarczony przez użytkownika wymaga protokołu szyfrowania ,
Transport Layer Securityktóry Lakehouse Federation obsługuje wyłącznie dla połączeń Oracle Cloud. Weryfikacja nazwy hosta jest wykonywana w ramach handshake TLS: połączenie kończy się niepowodzeniem, jeśli nazwa hosta na certyfikacie nie odpowiada żądanej nazwie hosta.
-
Host: na przykład
- Kliknij pozycję Utwórz połączenie.
- Na stronie Podstawy katalogu wprowadź nazwę katalogu obcego. 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 pozycję 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 katalogu. Zacznij wpisywać nazwę w polu tekstowym, a następnie kliknij nazwę w zwróconych wynikach.
- Nadaj uprawnienia w katalogu. Kliknij Udziel:
- Określ głównych, którzy będą mieli dostęp do obiektów w wykazie. Zacznij wpisywać nazwę w polu tekstowym, a następnie kliknij nazwę w zwróconych wynikach.
- Wybierz ustawienia wstępne uprawnień , które chcesz przyznać każdemu podmiotowi. Wszyscy użytkownicy konta domyślnie otrzymują
BROWSE.- Wybierz z menu rozwijanego pozycję Czytnik danych, aby przyznać
readuprawnienia do obiektów w katalogu. - Wybierz pozycję Edytor danych z menu rozwijanego, aby przyznać
readimodifyuprawnienia do obiektów w wykazie. - Ręcznie wybierz uprawnienia do udzielenia.
- Wybierz z menu rozwijanego pozycję Czytnik danych, aby przyznać
- Kliknij Grant.
- Kliknij przycisk Dalej.
- Na stronie Metadane określ pary klucz-wartość dla tagów. Aby uzyskać więcej informacji, zobacz Nakładanie tagów na obiekty zabezpieczalne w katalogu Unity.
- (Opcjonalnie) Dodaj komentarz.
- Kliknij przycisk Zapisz.
SQL
Uruchom następujące polecenie w notesie lub edytorze zapytań SQL usługi Databricks:
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>',
encryption_protocol '<protocol>' -- optional
);
Databricks zaleca używanie tajemnic Azure Databricks zamiast ciągów tekstowych dla poufnych informacji, takich jak poświadczenia,. Przykład:
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>'),
encryption_protocol '<protocol>' -- optional
)
Aby zweryfikować tożsamość serwera podczas uzgadniania TLS (na przykład gdy serwer Oracle przedstawia certyfikat wystawiony przez prywatny lub wewnętrzny urząd certyfikacji, którego nie ma w domyślnym magazynie zaufanych certyfikatów), przekaż certyfikat serwera zakodowany w formacie PEM w opcji userProvidedServerCertificate. Certyfikat serwera dostarczony przez użytkownika wymaga ustawienia encryption_protocol na TLS, co jest obsługiwane przez Lakehouse Federation tylko w przypadku połączeń z Oracle Cloud.
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>'),
encryption_protocol 'TLS',
userProvidedServerCertificate '<pem-encoded-certificate>'
)
Jeśli musisz używać ciągów w postaci zwykłego tekstu w poleceniach SQL w zeszycie, unikaj obcinania ciągu, stosując odpowiednie sekwencje escape dla znaków specjalnych, takich jak $ z \. Na przykład: \$.
Aby uzyskać informacje o konfigurowaniu tajnych danych, zobacz Zarządzanie tajnymi danymi.
Tworzenie wykazu obcego
Note
Jeśli używasz interfejsu użytkownika do utworzenia połączenia ze źródłem danych, uwzględnia to tworzenie katalogu zewnętrznego 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 i polecenia Unity Catalog.
Wymagane uprawnienia:CREATE CATALOG uprawnienie do magazynu metadanych i własność połączenia lub uprawnienia CREATE FOREIGN CATALOG w połączeniu.
Eksplorator wykazu
W obszarze roboczym usługi Azure Databricks kliknij
Wykaz do otwierania Eksploratora wykazu.
W górnej części okienka
Katalog , kliknij ikonęDodaj lub plus Dodaj i wybierzDodaj katalog z menu.Alternatywnie na stronie Szybki dostęp kliknij przycisk Wykazy, 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 są opcjonalne. Zastąp wartości 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. -
<service-name>: nazwa usługi, którą chcesz odwzorować jako wykaz w usłudze Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');
Obsługiwane funkcje wypychania
W poniższej tabeli wymieniono obsługiwane przez Oracle operacje wypychania oraz wymagane do nich obliczenia.
| Wypychanie | Obsługiwane zasoby obliczeniowe |
|---|---|
| Aggregates |
|
| Operatory arytmetyczne (na przykład +, -, *, %, /) — nieobsługiwane, jeśli usługa ANSI jest wyłączona |
|
| Operatory Boolowskie (na przykład =, <=>, <, <=, >, >=) |
|
| Zawiera, Zaczyna się od, Kończy się na |
|
| Filters |
|
| Limit |
|
| Funkcje matematyczne (ABS, FLOOR — częściowe wsparcie, tylko wyrażenia filtrujące) |
|
| Różne funkcje (na przykład Alias, Cast, SortOrder — częściowa obsługa, tylko wyrażenia filtru) |
|
| Offset |
|
| Projections |
|
| Sortowanie, gdy jest używane z limitem |
|
| Funkcje łańcuchów znakowych (UPPER, LOWER, CHAR_LENGTH, TRIM, RTRIM, LTRIM, CONCAT, RPAD, LPAD — częściowa obsługa, tylko w wyrażeniach filtrów) |
|
| Dołącza |
|
| Funkcje okna |
|
Mapowania typów danych
Podczas odczytywania z bazy danych Oracle do platformy Spark typy danych są mapowane w następujący sposób:
| Typ Oracle | Typ Spark |
|---|---|
TIMESTAMP WITH TIMEZONE, TIMESTAMP WITH LOCAL TIMEZONE |
TimestampType |
DATE, TIMESTAMP |
TimestampType/TimestampNTZType* |
NUMBER, FLOAT |
DecimalType** |
BINARY FLOAT |
FloatType |
BINARY DOUBLE |
DoubleType |
CHAR, , NCHAR, , VARCHAR2NVARCHAR2 |
StringType |
*
DATE i TIMESTAMP są mapowane do platformy Spark TimestampType, jeśli spark.sql.timestampType = TIMESTAMP_LTZ (ustawienie domyślne). Są przypisywane do TimestampNTZType, jeśli spark.sql.timestampType = TIMESTAMP_NTZ.
**
NUMBER bez określenia precyzji zostanie odwzorowany jako DecimalType(38, 10), ponieważ Spark nie obsługuje czysto zmiennoprzecinkowego typu Decimal.