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.
Uwaga / Notatka
Ta funkcja jest dostępna w publicznej wersji zapoznawczej dla środowiska Databricks Runtime 18.1 i bazy danych DBSQL 2025.40 i nowszych. W przypadku magazynów SQL należy również włączyć wersję zapoznawczą Włącz obsługę sieci dla izolowanych obciążeń w bezserwerowych magazynach SQL.
Usługa Azure Databricks obsługuje nawiązywanie połączeń z zewnętrznymi bazami danych przy użyciu protokołu JDBC. Możesz użyć połączenia JDBC Unity Catalog do odczytu i zapisu w źródle danych za pomocą interfejsu API Źródła Danych Spark lub interfejsu API SQL Remote Query usługi Azure Databricks. Połączenie JDBC jest obiektem zabezpieczalnym w Unity Catalog, który określa sterownik JDBC, adres URL oraz poświadczenia do uzyskiwania dostępu do zewnętrznej bazy danych. Połączenie JDBC jest obsługiwane w Unity Catalog dla typów obliczeniowych, w tym bezserwerowych, standardowych klastrach, dedykowanych klastrach i Databricks SQL.
Zalety korzystania z połączenia JDBC
- Odczytywanie i zapisywanie w źródłach danych za pomocą JDBC oraz interfejsu Spark Data Source API.
- Odczyt ze źródeł danych za pomocą narzędzia JDBC przy użyciu interfejsu API SQL zapytań zdalnych.
- Zarządzany dostęp do źródła danych za pomocą połączenia Katalogu Unity.
- Utwórz połączenie jednorazowo i użyj go ponownie w dowolnym zasobie obliczeniowym katalogu Unity Catalog.
- Stabilna dla platformy Spark i uaktualnień obliczeniowych.
- Poświadczenia połączenia są ukryte przed użytkownikiem zapytania.
JDBC a federacja zapytań
JDBC stanowi uzupełnienie federacji zapytań. Usługa Databricks zaleca wybranie federacji zapytań z następujących powodów:
- Federacja zapytań zapewnia szczegółowe mechanizmy kontroli dostępu i zarządzania na poziomie tabeli przy użyciu zewnętrznego katalogu. Połączenie JDBC z katalogiem Unity zapewnia zarządzanie tylko na poziomie połączenia.
- Federacja zapytań wypycha zapytania Spark w celu uzyskania optymalnej wydajności zapytań.
Uwaga / Notatka
Federacja zapytań obsługuje wiele popularnych baz danych, w tym Oracle, MySQL, PostgreSQL, SQL Server i Snowflake. Jeśli baza danych jest obsługiwana, Databricks zaleca korzystanie z federacji zapytań zamiast połączenia JDBC. Zobacz Lakehouse Federation aby zobaczyć pełną listę obsługiwanych baz danych.
Jednak wybierz użycie połączenia JDBC dla Unity Catalog w następujących scenariuszach:
- Twoja baza danych nie jest obsługiwana przez federację zapytań.
- Chcesz użyć określonego sterownika JDBC.
- Musisz zapisać dane w źródle danych przy użyciu Sparka (federacja zapytań nie wspiera zapisów).
- Potrzebujesz większej elastyczności, wydajności i kontroli równoległości za pomocą opcji interfejsu API źródła danych platformy Spark.
- Chcesz przekazywać źródłowe zapytania SQL do źródła za pomocą opcji Spark
query.
Dlaczego warto używać źródeł danych JDBC i PySpark?
Źródła danych PySpark są alternatywą dla źródła danych JDBC Spark.
Użyj połączenia JDBC:
- Jeśli chcesz użyć wbudowanej obsługi JDBC platformy Spark.
- Jeśli chcesz użyć gotowego sterownika JDBC, który już istnieje.
- Jeśli potrzebujesz zarządzania Katalogiem Unity na poziomie połączenia.
- Jeśli chcesz nawiązać połączenie z dowolnego typu obliczeniowego katalogu Unity: bezserwerowy, standardowy, dedykowany, API SQL.
- Jeśli chcesz używać połączenia z interfejsami API dla języków Python, Scala i SQL.
Użyj źródła danych PySpark:
- Jeśli chcesz mieć elastyczność tworzenia i projektowania źródła danych platformy Spark lub ujścia danych przy użyciu języka Python.
- Jeśli używasz go tylko w notatnikach lub zadaniach PySpark.
- Jeśli chcesz zaimplementować niestandardową logikę partycjonowania.
Ani JDBC, ani źródła danych PySpark nie ujawniają statystyk optymalizatora zapytań, aby ułatwić wybór kolejności operacji.
Jak to działa
Aby nawiązać połączenie ze źródłem danych przy użyciu połączenia JDBC, zainstaluj sterownik JDBC na obliczeniach platformy Spark. Połączenie umożliwia określenie i zainstalowanie sterownika JDBC w izolowanej piaskownicy dostępnej dla obliczeń Spark, co zapewnia bezpieczeństwo Spark i zarządzanie katalogiem Unity. Aby uzyskać więcej informacji na temat sandboxingu, zobacz Jak usługa Databricks wymusza izolację użytkowników?.
Requirements
Aby użyć połączenia JDBC z interfejsem API źródła danych platformy Spark w klastrach bezserwerowych i standardowych, należy najpierw spełnić następujące wymagania:
Wymagania dotyczące obszaru roboczego:
- Obszar roboczy usługi Azure Databricks z włączonym Unity Catalog.
Wymagania dotyczące obliczeń:
- Łączność sieciowa od zasobu obliczeniowego do docelowego systemu bazy danych. Zobacz Łączność sieciowa.
- Środowisko obliczeniowe usługi Azure Databricks musi używać bezserwerowego lub środowiska Databricks Runtime 17.3 LTS lub nowszego w trybie standardowym lub dedykowanym trybie dostępu.
- Magazyny SQL muszą być w wersji pro lub bezserwerowej i muszą używać wersji 2025.35 lub nowszej.
Wymagane uprawnienia:
- Aby utworzyć połączenie, musisz mieć uprawnienia
CREATE CONNECTIONdo magazynu metadanych powiązanego z obszarem roboczym. -
CREATElubMANAGEdostęp do woluminu Unity Catalog przez autora połączenia. - Dostęp do woluminu przez użytkownika wysyłającego zapytanie o połączenie.
Metody uwierzytelniania
Poświadczenia statyczne
Uwierzytelnianie przy użyciu statycznych poświadczeń przechowuje poświadczenia bezpośrednio w konfiguracji połączenia — na przykład nazwę użytkownika i hasło, klucz API lub dowolne inne pole poświadczeń obsługiwane przez docelowy sterownik JDBC. Dane uwierzytelniające są przekazywane bez zmian do sterownika JDBC w momencie użycia połączenia.
Maszyna-do-maszyny OAuth
Ważna
Ta funkcja jest dostępna w wersji beta. Administratorzy obszaru roboczego mogą kontrolować dostęp do tej funkcji ze strony Podglądy . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.
Uwierzytelnianie między maszynami OAuth (M2M) jest używane, gdy dwa systemy lub aplikacje komunikują się bez bezpośredniego zaangażowania użytkowników. Tokeny są wydawane zarejestrowanemu klientowi maszynowemu, który uwierzytelnia się przy użyciu własnych poświadczeń. Ta metoda uwierzytelniania jest idealna w przypadku komunikacji między usługami, mikrousług i zadań automatyzacji, w których nie jest potrzebny kontekst użytkownika.
Gdy połączenie JDBC używa OAuth M2M, Unity Catalog wymienia poświadczenia klienta na token w skonfigurowanym punkcie końcowym tokena i przekazuje do sterownika JDBC wyłącznie uzyskany token dostępu o krótkim czasie ważności za pomocą parametru token sterownika.
Krok 1. Tworzenie woluminu i instalowanie pliku JAR JDBC
Połączenie JDBC odczytuje i instaluje sterownik JDBC z pliku JAR z wolumenu Unity Catalog.
Jeśli nie masz dostępu do zapisu i odczytu do istniejącego woluminu, utwórz nowy wolumin:
CREATE VOLUME IF NOT EXISTS my_catalog.my_schema.my_volume_JARsPrześlij plik JAR sterownika JDBC do woluminu.
Udziel dostępu do odczytu na woluminie użytkownikom, którzy wysyłają zapytania dotyczące połączenia:
GRANT READ VOLUME ON VOLUME my_catalog.my_schema.my_volume_JARs TO `account users`
Krok 2. Tworzenie połączenia JDBC
Połączenie JDBC jest obiektem, który można zabezpieczyć w usłudze Unity Catalog. Określa sterownik JDBC, ścieżkę adresu URL, poświadczenia dostępu do zewnętrznego systemu bazy danych i dozwolone opcje, które użytkownik kwerendy może określić. Aby utworzyć połączenie, użyj Eksploratora wykazu lub CREATE CONNECTION polecenia SQL w notesie usługi Azure Databricks lub edytorze zapytań SQL usługi Databricks. Zobacz Metody uwierzytelniania dla obsługiwanych metod uwierzytelniania.
Uwaga / Notatka
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 Unity Catalog.
Przed utworzeniem połączenia zwróć uwagę na następujące kwestie:
- Administrator metastore’u lub użytkownik tworzący połączenie musi mieć uprawnienie
CREATE CONNECTION. - Adres URL i poświadczenia są jedynymi wymaganymi opcjami. Nie osadzaj poświadczeń w adresie URL, ponieważ dzienniki lub błędy mogą je uwidocznić. Użyj opcji dedykowanych poświadczeń dla wybranej metody uwierzytelniania.
- Służy
externalOptionsAllowListdo kontrolowania opcji źródła danych platformy Spark, które użytkownicy mogą określić w czasie wykonywania zapytania. Jeśli nie zostanie określony, wartość domyślna to'dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions'. Ustaw go na puste parametry, aby ograniczyć użytkowników tylko do opcji zdefiniowanych w połączeniu. Użytkownicy nigdy nie mogą określaćurlanihost. - Jeśli docelowa baza danych wymaga wybrania bazy danych w momencie wykonywania zapytania (na przykład SQL Server, gdzie baza danych nie jest określona w adresie URL połączenia), uwzględnij
databasewexternalOptionsAllowList, aby użytkownicy wykonujący zapytania mogli ją podać.databasenie znajduje się na domyślnej liście dozwolonych.
Eksplorator wykazu
W obszarze roboczym usługi Azure Databricks kliknij
Wykaz.
Kliknij
Połącz, a następnie kliknij Połączenia.
Kliknij pozycję Utwórz połączenie.
Na stronie
Podstawy połączenia w kreatorzeKonfigurowanie połączenia , wprowadź nazwę połączenia przyjazną dla użytkownika. W polu Typ połączenia wybierz pozycję JDBC.
(Opcjonalnie) Dodaj komentarz.
Kliknij przycisk Dalej.
Na stronie Szczegóły połączenia wprowadź następujące właściwości połączenia:
Property Opis Adres URL Adres URL JDBC dla bazy danych w postaci jdbc:subprotocol:subname(na przykładjdbc:oracle:thin:@<host>:<port>:<SID>).Zależności języka Java Pliki JAR sterownika JDBC z wolumenów Unity Catalog. Kliknij pozycję Dodaj zależność JAR, aby dodać każdy plik JAR (na przykład /Volumes/<catalog>/<schema>/<volume_name>/ojdbc11.jar).Lista dozwolonych opcji zewnętrznych Rozdzielona przecinkami lista opcji źródła danych platformy Spark , które mogą określać użytkownicy w czasie wykonywania zapytań. Wartość domyślna to dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions. Ustaw wartość na pustą, aby ograniczyć użytkowników tylko do opcji zdefiniowanych w połączeniu.dodatkowe opcje Dowolne opcje sterownika JDBC przekazywane bezpośrednio do sterownika jako pary klucz–wartość. Ta sekcja służy do ustawiania poświadczeń bazy danych (na przykład klucza useri kluczapassword) oraz innych właściwości specyficznych dla sterownika. W razie potrzeby przełączaj się między trybami wejściowymi interfejsu użytkownika i formatem JSON .Kliknij pozycję Utwórz połączenie.
OAuth Machine-to-Machine (beta)
Ważna
Ta funkcja jest dostępna w wersji beta. Administratorzy obszaru roboczego mogą kontrolować dostęp do tej funkcji ze strony Podglądy . Zobacz Zarządzanie wersjami zapoznawczami usługi Azure Databricks.
jdbc_oauth_m2m_connector Gdy wersja zapoznawcza jest włączona w obszarze roboczym, na stronie Podstawy połączenia zostanie wyświetlone pole Typ uwierzytelniania z opcjami Poświadczenia statyczne i Maszyna OAuth na maszynę. Aby utworzyć połączenie OAuth M2M JDBC:
Na stronie Podstawy połączenia ustaw opcję Typ uwierzytelniania na OAuth Machine to Machine.
Kliknij przycisk Dalej.
Na stronie Szczegóły połączenia wprowadź następujące właściwości oprócz adresu URL i zależności języka Java:
Property Opis identyfikator klienta Identyfikator klienta OAuth wystawiony dla aplikacji. Klucz tajny klienta Klucz tajny klienta OAuth wydany dla aplikacji. Zakres OAuth Zakres żądania podczas wymiany tokenów. Wyrażone jako lista ciągów znaków rozdzielonych spacjami z rozróżnianiem wielkości liter. Punkt końcowy tokenu Punkt końcowy tokenu OAuth 2.0 służący do wymiany poświadczeń klienta na token dostępu. Zazwyczaj w formacie https://authorization-server.com/oauth/token.Metoda wymiany poświadczeń protokołu OAuth Jak poświadczenia klienta są przekazywane do punktu końcowego tokenu: -
header_and_body — poświadczenia są wysyłane zarówno w nagłówku
Authorization, jak i w treści żądania (ustawienie domyślne). - body_only — poświadczenia są wysyłane tylko w treści żądania.
-
header_only — dane uwierzytelniające są wysyłane wyłącznie w nagłówku
Authorization.
Nazwa parametru tokenu JDBC Właściwość KEY wymagana przez docelowy sterownik JDBC do zaakceptowania tokenu dostępu OAuth. Azure Databricks dynamicznie wypełnia ten parametr VALUE wygenerowanym prawidłowym tokenem dostępu OAuth. Typowe KEYs: access_token,oauthTokenlubpassword. Aby uzyskać poprawną nazwę klucza parametru, zapoznaj się z dokumentacją sterownika JDBC.-
header_and_body — poświadczenia są wysyłane zarówno w nagłówku
Kliknij pozycję Utwórz połączenie.
SQL
CREATE CONNECTION Użyj polecenia SQL w notesie lub edytorze zapytań SQL usługi Databricks.
Poświadczenia statyczne
Uruchom następujące polecenie, dostosowując odpowiednio wolumen, adres URL, poświadczenia i externalOptionsAllowList:
DROP CONNECTION IF EXISTS <JDBC-connection-name>;
CREATE CONNECTION <JDBC-connection-name> TYPE JDBC
ENVIRONMENT (
java_dependencies '["/Volumes/<catalog>/<Schema>/<volume_name>/JDBC_DRIVER_JAR_NAME.jar"]'
)
OPTIONS (
url 'jdbc:<database_URL_host_port>',
user '<user>',
password '<password>',
externalOptionsAllowList 'dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions'
);
DESCRIBE CONNECTION <JDBC-connection-name>;
Przykład: połączenie Oracle JDBC
Poniższy przykład tworzy połączenie JDBC z bazą danych Oracle przy użyciu sterownika elastycznego Oracle. Pobierz plik JAR sterownika Oracle JDBC (na przykład ojdbc11.jar) ze strony pobierania Oracle JDBC i przekaż go do wolumenu Unity Catalog przed uruchomieniem tego polecenia.
CREATE CONNECTION oracle_connection TYPE JDBC
ENVIRONMENT (
java_dependencies '["/Volumes/my_catalog/my_schema/my_volume_JARs/ojdbc11.jar"]'
)
OPTIONS (
url 'jdbc:oracle:thin:@<host>:<port>:<SID>',
user '<oracle_user>',
password '<oracle_password>',
externalOptionsAllowList 'dbtable,query'
);
OAuth maszyna-maszyna
Uruchom następujące polecenie, dostosowując odpowiednio wolumen, adres URL, poświadczenia i externalOptionsAllowList:
CREATE CONNECTION <JDBC-connection-name> TYPE JDBC
ENVIRONMENT (
java_dependencies '["/Volumes/<catalog>/<schema>/<volume_name>/JDBC_DRIVER_JAR_NAME.jar"]'
)
OPTIONS (
url 'jdbc:<database_URL_host_port>',
client_id '<client-id>',
client_secret '<client-secret>',
oauth_scope '<scope>',
token_endpoint '<https://authorization-server.com/oauth/token>',
oauth_credential_exchange_method 'header_and_body',
jdbc_token_parameter_name '<driver-token-parameter-name>',
externalOptionsAllowList 'dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions'
);
Przykład: połączenie JDBC postgreSQL z usługą OAuth M2M
Poniższy przykład tworzy połączenie JDBC z bazą danych PostgreSQL przy użyciu uwierzytelniania maszynowego do komputera OAuth. Pobierz plik JAR sterownika JDBC PostgreSQL (na przykład postgresql-42.7.3.jar) ze strony pobierania sterownika JDBC PostgreSQL i prześlij go do woluminu Unity Catalog przed uruchomieniem tego polecenia. W przypadku wdrożeń PostgreSQL skonfigurowanych do akceptowania tokenu dostępu OAuth w polu hasła ustaw element jdbc_token_parameter_name na password.
CREATE CONNECTION postgres_oauth_connection TYPE JDBC
ENVIRONMENT (
java_dependencies '["/Volumes/my_catalog/my_schema/my_volume_JARs/postgresql-42.7.3.jar"]'
)
OPTIONS (
url 'jdbc:postgresql://<host>:<port>/<database>?sslmode=require',
client_id '<client-id>',
client_secret '<client-secret>',
oauth_scope '<scope>',
token_endpoint 'https://authorization-server.com/oauth/token',
oauth_credential_exchange_method 'header_and_body',
jdbc_token_parameter_name 'password',
externalOptionsAllowList 'dbtable,query'
);
Właściciel połączenia lub menedżer połączenia może dodać do połączenia wszelkie dodatkowe opcje obsługiwane przez sterownik JDBC. Ze względów bezpieczeństwa opcje zdefiniowane w połączeniu nie mogą być zastępowane w czasie wykonywania zapytania.
Krok 3: Udziel USE uprawnienia
Nadaj uprawnienie do połączenia dla użytkowników:
GRANT USE CONNECTION ON CONNECTION <connection-name> TO <user-name>;
Aby uzyskać informacje na temat zarządzania istniejącymi połączeniami, zobacz Zarządzanie połączeniami dla Lakehouse Federation.
Krok 4. Wykonywanie zapytań względem źródła danych
Użytkownicy z USE CONNECTION uprawnieniami mogą wysyłać zapytania do źródła danych przy użyciu połączenia JDBC przez Spark lub przy użyciu zdalnych zapytań przez API SQL. Użytkownicy mogą dodawać dowolne opcje dotyczące źródła danych Spark obsługiwane przez sterownik JDBC i określone w externalOptionsAllowList w połączeniu JDBC (na przykład w tym przypadku: 'dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions'). Aby wyświetlić dozwolone opcje, uruchom następujące zapytanie:
DESCRIBE CONNECTION <JDBC-connection-name>;
Uwaga / Notatka
Ciąg query ten działa w natywnym dialekcie SQL bazy danych, więc cytuj wszystkie identyfikatory (baza danych, schemat, nazwy tabel i kolumn), które zawierają znaki specjalne, space lub zarezerwowane słowa, używając składni tej bazy. Na przykład używaj nawiasów [...] dla SQL Server, podwójnych cudzysłowów "..." dla PostgreSQL i Oracle oraz backticków dla MySQL.
Python
df = (
spark.read.format('jdbc')
.option('databricks.connection', '<JDBC-connection-name>')
.option('query', 'select * from <table_name>') # query in source SQL language - Option specified by querying user
.load()
)
df.display()
SQL
SELECT * FROM
remote_query('<JDBC-connection-name>', query => 'SELECT * FROM <table>'); -- query in source SQL language - Option specified by querying user
W przypadku baz danych, które wymagają wybrania docelowej bazy danych w czasie wykonywania zapytania, należy przekazać opcję database. Poniższy przykład SQL Server cytuje także nazwy schematów i tabel w nawiasach ([...]), aby obsługiwać specjalne znaki i zarezerwowane słowa:
SELECT * FROM remote_query(
'<JDBC-connection-name>',
database => 'test-db',
query => 'SELECT TOP 100 * FROM [dbo].[FactFinance]'
);
Migration
Aby przeprowadzić migrację z istniejących obciążeń interfejsu API Spark Data Source, usługa Databricks zaleca wykonanie następujących czynności:
- Usuń adres URL i poświadczenia z opcji w interfejsie API źródła danych Spark.
- Dodaj
databricks.connectionw opcjach w interfejsie API źródła danych platformy Spark. - Utwórz połączenie JDBC z odpowiednim adresem URL i poświadczeniami.
- W połączeniu określ opcje, które powinny być statyczne i nie powinny być określone przez wysyłanie zapytań do użytkowników.
- W połączeniu
externalOptionsAllowListokreśl opcje źródła danych, które mają zostać dostosowane lub zmodyfikowane przez użytkowników w czasie wykonywania zapytania w kodzie interfejsu API źródła danych platformy Spark (na przykład'dbtable,query,partitionColumn,lowerBound,upperBound,numPartitions').
Ograniczenia
API źródła danych Spark
- Adres URL i nazwa hosta nie mogą być używane w interfejsie API źródłowego danych Spark.
- Ciąg
.option("databricks.connection", "<Connection_name>")jest wymagany. - Opcji zdefiniowanych w połączeniu nie można używać w interfejsie API źródła danych w kodzie w czasie wykonywania zapytania.
- Tylko opcje określone w
externalOptionsAllowListmogą być używane przez użytkowników wysyłających zapytania. - Limit pamięci dla sterownika JDBC wynosi 400 MiB. Rozważ użycie mniejszego
fetchSizelimitu, jeśli zostanie osiągnięty limit. - Źródło danych JDBC platformy Spark nie obsługuje dowolnych instrukcji DML, takich jak
UPDATElubDELETE, względem zewnętrznej bazy danych. Obsługuje odczytywanie danych i dołączanie lub zastępowanie całych tabel, a nie modyfikacji na poziomie wiersza.
Support
- Źródła danych platformy Spark nie są obsługiwane.
- Potoki Lakeflow nie są obsługiwane.
- Zależność połączenia podczas tworzenia:
java_dependenciesobsługuje wyłącznie lokalizacje woluminów dla plików JAR sterowników JDBC. - Zależność połączenia w zapytaniu: użytkownik połączenia musi mieć
READdostęp do woluminu, w którym znajduje się plik JAR sterownika JDBC. - W trybie dedykowanego dostępu (dawniej tryb dostępu pojedynczego użytkownika) musisz być właścicielem lub menedżerem połączenia, aby go używać.
- Certyfikaty SSL nie są obsługiwane.
- Obce katalogi nie są obsługiwane w połączeniach JDBC.
Authentication
- Ten łącznik obsługuje poświadczenia statyczne i protokół OAuth Machine-to-Machine. Nie obsługuje poświadczeń Unity Catalog ani poświadczeń usług.
Sieć
- Docelowy system bazy danych i obszar roboczy Azure Databricks nie mogą znajdować się w tej samej sieci wirtualnej.
Łączność sieciowa
Wymagana jest łączność sieciowa z zasobu obliczeniowego z docelowym systemem bazy danych. Zobacz Zalecenia dotyczące sieci dla usługi Lakehouse Federation , aby uzyskać ogólne wskazówki dotyczące sieci.
Klasyczne obliczenia: standardowe i dedykowane klastry
Azure Databricks sieci wirtualne są skonfigurowane tak, aby zezwalały tylko na klastry Spark. Aby połączyć się z inną infrastrukturą, umieść docelowy system bazy danych w innej sieci VNet i użyj komunikacji równorzędnej sieci VNet. Po ustanowieniu komunikacji równorzędnej sieci wirtualnej (VNet) sprawdź łączność za pomocą funkcji UDF connectionTest w klastrze lub magazynie.
Jeśli obszar roboczy Azure Databricks i docelowe systemy baz danych znajdują się w tej samej sieci wirtualnej, usługa Databricks zaleca jedną z następujących opcji:
- Korzystanie z obliczeń bezserwerowych.
- Skonfiguruj docelową bazę danych tak, aby zezwalała na ruch TCP i UDP przez porty 80 i 443, a następnie określ te porty w połączeniu.
Serverless
W przypadku korzystania z połączenia JDBC w obliczeniach bezserwerowych można skonfigurować zaporę dla bezserwerowego dostępu obliczeniowego do docelowego systemu bazy danych, dodając wychodzące adresy IP do listy dozwolonych. Alternatywnie można skonfigurować łączność prywatną.
Test łączności
Aby przetestować łączność między środowiskiem obliczeniowym Azure Databricks a systemem bazy danych, użyj następującej funkcji UDF:
CREATE OR REPLACE TEMPORARY FUNCTION connectionTest(host string, port string) RETURNS string LANGUAGE PYTHON AS $$
import subprocess
try:
command = ['nc', '-zv', host, str(port)]
result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return str(result.returncode) + "|" + result.stdout.decode() + result.stderr.decode()
except Exception as e:
return str(e)
$$;
SELECT connectionTest('<database-host>', '<database-port>');
Często zadawane pytania
Poniżej przedstawiono najczęściej zadawane pytania dotyczące działania mechanizmu predicate pushdown w połączeniach JDBC.
Czy JDBC obsługuje mechanizm predicate pushdown?
Yes. Filtry są domyślnie przesyłane do zdalnej bazy danych zarówno przez interfejs API źródła danych Spark (format('jdbc')), jak i przez funkcję remote_query SQL. To, które predykaty można przenieść, zależy od sterownika JDBC i dialektu, więc uruchom EXPLAIN na swoim zapytaniu i sprawdź plan fizyczny, aby potwierdzić, które filtry są przenoszone do źródła danych. Dla funkcji SQL remote_query można kontrolować określone operacje pushdown (filtry, limity, przesunięcia i agregacje) za pomocą opcji takich jak pushdown.filters.enabled; wszystkie są domyślnie włączone.
Przenoszenie predykatów różni się od udostępniania statystyk tabeli optymalizatorowi zapytań. Źródła danych JDBC i PySpark nie ujawniają statystyk optymalizatora zapytań, aby ułatwić wybór kolejności operacji, niezależnie od tego, czy predykaty są wypychane.