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 BigQuery, 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 BigQuery przy użyciu Lakehouse Federation, musisz utworzyć następujące elementy w magazynie metadanych Azure Databricks Unity Catalog (obszary robocze utworzone po 9 listopada 2023 r. mają już automatycznie aprowizowany Unity Catalog):
- Połączenie do bazy danych BigQuery.
- zagraniczny katalog, który dubluje bazę danych BigQuery w Unity Catalog, dzięki czemu można użyć składni zapytań Unity Catalog i narzędzi zarządzania ładem danych w celu zarządzania dostępem użytkowników do bazy danych Azure Databricks.
Requirements
Aby uruchamiać zapytania federacyjne w trybie BigQuery, utwórz połączenie z usługą BigQuery i wykazem obcym, który odzwierciedla bazę danych BigQuery. Następnie możesz wykonywać zapytania na danych BigQuery i zarządzać nimi przy użyciu Azure Databricks i Unity Catalog. Dodatkowe wymagania dotyczące uprawnień są określone w każdej sekcji odnoszącej się do zadań.
Wymagania dotyczące obszaru roboczego:
- Obszar roboczy z włączonym Katalogiem Unity.
Wymagania dotyczące obliczeń:
- Łączność sieciowa z Twojego zasobu obliczeniowego do wymaganych punktów końcowych Google. Zobacz Wymagane punkty końcowe i kontrole łączności.
- Obliczenia Azure Databricks muszą korzystać z Databricks Runtime 16.1 lub nowszego oraz standardowego lub dedykowanego trybu dostępu (dawniej współdzielonego i jednoużytkownikowego).
- Magazyny SQL muszą być profesjonalne lub bezserwerowe.
Wymagania dotyczące uprawnień:
- Aby utworzyć połączenie, musisz mieć
CREATE CONNECTIONuprawnienia do magazynu metadanych Unity Catalog, który jest przypięty do obszaru roboczego. - Aby utworzyć katalog obcy, musisz mieć uprawnienie
CREATE CATALOGw metastore i być właścicielem połączenia lub mieć uprawnienieCREATE FOREIGN CATALOGdo połączenia.
Wymagane punkty końcowe i kontrole łączności
Twoje obliczenia Azure Databricks łączą się bezpośrednio z API Google przez HTTPS. BigQuery uwierzytelnia się za pomocą klucza konta usługi Google, więc łącznik pobiera i odświeża tokeny dostępu z poziomu obliczeniowego, a nie z płaszczyzny kontroli Azure Databricks. Zatem wystarczające jest umożliwienie wyjścia obliczeniowego do poniższych punktów końcowych. Jeśli Twoje środowisko obliczeniowe ma ograniczenia wychodzącego ruchu sieciowego, zezwól na dostęp do tych punktów końcowych i upewnij się, że środowisko obliczeniowe ma do nich dostęp, zanim utworzysz połączenie lub katalog.
Wymagane punkty końcowe
Zezwól na wychodzący ruch HTTPS (port 443) z zasobów obliczeniowych Azure Databricks do następujących punktów końcowych Google:
-
bigquery.googleapis.com: BigQuery REST API, używane do operacji metadanych oraz testowego sprawdzania połączenia . -
bigquerystorage.googleapis.com: BigQuery Storage API. Konektor odczytuje dane tabeli za pośrednictwem interfejsu Storage API w środowisku Databricks Runtime w wersji 16.1 i nowszych, dlatego ten endpoint jest wymagany, aby federacyjne zapytania mogły zwracać dane. Zobacz Materializacja. -
oauth2.googleapis.comorazaccounts.google.com: Punkty końcowe uwierzytelniania Google służące do uwierzytelniania konta usługi połączenia. Są to hosty w polachtoken_uriiauth_uripliku JSON konta usługi. Twoje wartości mogą się różnić, więc zezwól na hosty występujące w pobranym pliku. Zobacz notatkę uwierzytelniającą w sekcji Utwórz połączenie.
Jeśli Twój procesor korzysta z niestandardowego serwera DNS, upewnij się, że potrafi rozwiązać każdą z tych nazw hostów. W sieciach, które kierują ruch Google przez ograniczony wirtualny adres IP, upewnij się, że konfiguracja *.googleapis.com obejmuje punkty końcowe googleapis.com oraz że accounts.google.com również jest rozpoznawany.
Uwaga
Kontrola Test connection testuje interfejs BigQuery REST API oraz endpointy uwierzytelniania, ale nie odczytuje danych za pośrednictwem interfejsu Storage API. Pozytywny wynik testu nie potwierdza, że element bigquerystorage.googleapis.com jest osiągalny, co jest wymagane w przypadku zapytań federacyjnych w środowisku Databricks Runtime 16.1 i nowszym. Użyj poniższego sprawdzenia łączności, aby zweryfikować każdy punkt końcowy.
Sprawdź łączność z zasobu obliczeniowego
Zanim utworzysz połączenie, upewnij się, że twoje obliczenia mogą dotrzeć do każdego wymaganego punktu końcowego. Uruchom poniższe sprawdzenie w notebooku podłączonym do klastra ogólnego przeznaczenia, który korzysta z tej samej konfiguracji sieciowej co zasoby obliczeniowe, z których planujesz federować.
Udany test potwierdza dostępność tylko dla klasycznych obliczeń, które dzielą tę ścieżkę sieciową, takich jak klastry uniwersalne, klastry zadań czy magazyny pro SQL. Bezserwerowe hurtownie SQL łączą się z Google przez oddzielną bezserwerową ścieżkę ruchu wychodzącego, więc pozytywny wynik testu klastra nie potwierdza łączności bezserwerowej. Aby kontrolować i zweryfikować egres bezserwerowy, zobacz Co to jest kontrola wyjścia bezserwerowego?.
Podłącz notebook do klastra, który korzysta z konfiguracji docelowej sieci.
Wykonaj następujące polecenie powłoki, aby przetestować dostępność do każdego punktu końcowego:
%sh for host in bigquery.googleapis.com bigquerystorage.googleapis.com oauth2.googleapis.com accounts.google.com; do nc -zv "$host" 443 donePotwierdź, że każdy host zgłasza udane połączenie. Błąd lub przekroczenie limitu czasu w przypadku dowolnego hosta oznacza, że ruch wychodzący do tego punktu końcowego jest zablokowany albo na Twoim zasobie obliczeniowym nie działa rozwiązywanie nazw DNS.
Tworzenie połączenia
Połączenie wskazuje ścieżkę i poświadczenia potrzebne 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 katalogu Unity.
Wymagane uprawnienia: administrator magazynu metadanych lub użytkownik z uprawnieniami CREATE CONNECTION .
Eksplorator wykazu
W obszarze roboczym usługi Azure Databricks kliknij
Wykaz.
W górnej części okienka Wykaz kliknij
Ikona Dodaj i wybierz pozycję Utwórz połączenie z menu.Na stronie Podstawy połączenia kreatora Konfigurowanie połączenia wprowadź przyjazną dla użytkownika nazwę połączenia .
Wybierz typ połączenia Google BigQuery, a następnie kliknij przycisk Dalej.
Na stronie Uwierzytelniania wprowadź plik json klucza konta usługi Google dla instancji usługi BigQuery.
Jest to surowy obiekt JSON, który służy do określenia projektu BigQuery i zapewnienia uwierzytelniania. Możesz wygenerować ten obiekt JSON i pobrać go ze strony szczegółów konta usługi w usłudze Google Cloud w obszarze "KLUCZE". Konto usługi musi mieć odpowiednie uprawnienia przyznane w BigQuery, w tym użytkownika BigQuery i Podgląd danych BigQuery . Poniżej przedstawiono przykład.
{ "type": "service_account", "project_id": "PROJECT_ID", "private_key_id": "KEY_ID", "private_key": "PRIVATE_KEY", "client_email": "SERVICE_ACCOUNT_EMAIL", "client_id": "CLIENT_ID", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL", "universe_domain": "googleapis.com" }Uwaga
Google ustawia wartości adresów URL w pliku JSON konta usługi i mogą się one różnić w zależności od konta. Użyj ich dokładnie tak, jak są wyświetlane w pobranym pliku JSON. Jeśli skonfigurujesz reguły sieciowego serwera proxy dla Azure Databricks, aby uzyskać dostęp do interfejsów API Google, zezwól zarówno na
https://accounts.google.com, jak ihttps://oauth2.googleapis.com. Pełną listę wymaganych punktów końcowych Google oraz sposoby weryfikacji łączności z obliczeniami znajdziesz w sekcji Wymagane punkty końcowe i kontrole łączności.(Opcjonalnie) Wprowadź identyfikator projektu dla wystąpienia BigQuery:
Jest to nazwa projektu BigQuery używanego do rozliczeń dla wszystkich zapytań uruchamianych w ramach tego połączenia. Domyślnie jest to identyfikator projektu konta usługi. Konto usługi musi mieć odpowiednie uprawnienia przyznane dla tego projektu w BigQuery, w tym uprawnienia użytkownika BigQuery. W tym projekcie można utworzyć dodatkowy zestaw danych używany do przechowywania tabel tymczasowych przez funkcję BigQuery.
(Opcjonalnie) Dodaj komentarz.
Kliknij Utwórz połączenie.
Na stronie Catalog basics (Podstawy wykazu) 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ć 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ć nazwę lub podmiot w polu tekstowym, a następnie kliknij tę nazwę lub podmiot w zwróconych wynikach. Udziel przywilejów w katalogu. Kliknij przycisk Udziel:
- Określ podmioty główne, które będą miały dostęp do obiektów w katalogu. Zacznij wpisywać nazwę lub podmiot w polu tekstowym, a następnie kliknij tę nazwę lub podmiot w zwróconych wynikach.
- Wybierz ustawienia wstępne uprawnień , aby przyznać każdemu użytkownikowi. Wszyscy użytkownicy konta otrzymują domyślnie
BROWSE.- Wybierz Czytnik danych z menu rozwijanego, 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 Czytnik danych z menu rozwijanego, aby przyznać
- Kliknij i udziel.
Kliknij przycisk Dalej.
Na stronie Metadane określ pary tagów klucz-wartość. Aby uzyskać więcej informacji, zobacz Zastosuj tagi do obiektów z zabezpieczeniami w katalogu Unity.
(Opcjonalnie) Dodaj komentarz.
Kliknij Zapisz.
SQL
Uruchom następujące polecenie w notesie lub edytorze zapytań SQL usługi Databricks. Zastąp <GoogleServiceAccountKeyJson> element nieprzetworzonym obiektem JSON, który określa projekt BigQuery i zapewnia uwierzytelnianie. Możesz wygenerować ten obiekt JSON i pobrać go ze strony szczegółów konta usługi w usłudze Google Cloud w obszarze "KLUCZE". Konto usługi musi mieć odpowiednie uprawnienia przyznane w BigQuery, w tym BigQuery User i BigQuery Data Viewer. Aby zapoznać się z przykładowym obiektem JSON, spójrz na kartę Catalog Explorer na tej stronie.
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson '<GoogleServiceAccountKeyJson>'
);
Usługa Databricks zaleca używanie wpisów tajnych zamiast ciągów w postaci zwykłego tekstu dla poufnych wartości, takich jak poświadczenia. Na przykład:
CREATE CONNECTION <connection-name> TYPE bigquery
OPTIONS (
GoogleServiceAccountKeyJson secret ('<secret-scope>','<secret-key-user>')
)
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 zewnętrznego katalogu 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, użyj połączenia ze źródłem danych, które zostało już zdefiniowane.
Aby utworzyć wykaz obcy, możesz użyć Eksploratora wykazu lub CREATE FOREIGN CATALOG w notesie usługi Azure Databricks lub edytorze zapytań SQL usługi Databricks. 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 lub 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
Wykaz do otwierania Eksploratora wykazu.
Na górze okienka Katalog kliknij ikonę
Dodaj i wybierz Dodaj katalog z menu.Alternatywnie, na stronie Strona szybkiego dostępu, kliknij przycisk Katalogi, a następnie kliknij przycisk Utwórz katalog.
(Opcjonalnie) Wprowadź następującą właściwość wykazu:
Identyfikator projektu danych: nazwa projektu BigQuery zawierającego dane, które zostaną przypisane do tego wykazu. Domyślnie używany jest identyfikator projektu rozliczeniowego ustawiony na poziomie połączenia.
Postępuj zgodnie z instrukcjami dotyczącymi tworzenia katalogów obcych w Tworzenie katalogów.
(Opcjonalnie) Określ następujące opcje wykazu:
-
Materialization Dataset: opcjonalna nazwa zestawu danych BigQuery używana do materializowania wyników zapytania. Jeśli nie zostanie określony, zestaw danych do materializacji zostanie automatycznie przydzielony, kiedy to konieczne. Aby uzyskać więcej informacji, zobacz Materialization. -
Force materialization: Określa, czy materializować wyniki dla każdego zapytania w katalogu. Wartość domyślna tofalse. Aby uzyskać więcej informacji, zobacz Materialization. -
BIGNUMERIC Default Scale: opcjonalna wartość skalowania dla mapowania BigQueryBIGNUMERICna SparkDecimalType. Aby uzyskać więcej informacji, zobacz Mapowania typów danych .
-
SQL
Uruchom następujące polecenie SQL w notesie lub edytorze SQL usługi Databricks. Elementy w nawiasach kwadratowych są opcjonalne. Zastąp wartości zastępcze.
-
<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. -
<data-project-id>: opcjonalny identyfikator projektu BigQuery zawierający dane, które mają być mapowane na ten katalog. Jeśli nie zostanie określony, zostanie użyty identyfikator projektu ustawiony na połączeniu, a następnie identyfikator projektu konta usługi. -
<dataset-name>: opcjonalna nazwa zestawu danych BigQuery używana do materializowania wyników zapytania. Jeśli nie zostanie określony, zestaw danych do materializacji zostanie automatycznie przydzielony, kiedy to konieczne. Aby uzyskać więcej informacji, zobacz Materialization. -
<force-materialization>: Opcjonalna wartość boolowska. Jeślitrue, każde zapytanie względem katalogu materializuje swoje wyniki. Wartość domyślna tofalse. Aby uzyskać więcej informacji, zobacz Materialization. -
<scale>: opcjonalna wartość skalowania [0,38] dla mapowania bigqueryBIGNUMERICna platformę SparkDecimalType(38, scale). Wartość domyślna to38. Aby uzyskać więcej informacji, zobacz Mapowania typów danych .
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
[OPTIONS (
dataProjectId '<data-project-id>',
materializationDataset '<dataset-name>',
forceMaterialization '<force-materialization>',
bigNumericDefaultScale '<scale>'
)];
Materializacja
W przeciwieństwie do innych łączników federacyjnych, łącznik BigQuery używa interfejsu BigQuery Storage API zamiast JDBC, aby zwiększyć wydajność. Usługa Azure Databricks może odczytywać dane z BigQuery bezpośrednio z pamięci masowej lub przy użyciu zmaterializowanego zestawu danych. Operacje odczytu bezpośredniego oferują lepszą wydajność dla dużych skanowań oraz obsługują przesunięcia filtrów i projekcji. Materializacja wypycha dodatkowe operacje (limit, agregacje, sprzężenia, sortowanie) do obliczeń BigQuery przed przesyłaniem strumieniowych wyników do usługi Azure Databricks.
Widoki i tabele zewnętrzne są zawsze materializowane. Wszystkie pozostałe odczyty domyślnie używają bezpośredniej pamięci masowej bez materializacji.
Rozważ włączenie materializacji, jeśli potrzebujesz zaawansowanych zrzutów do bazy, odczytujesz małe zbiory wyników z dużych zbiorów danych lub odczytujesz dane między regionami. Materializacja wiąże się z dodatkowymi opłatami za obliczenia w BigQuery.
Aby wymusić materializację dla każdego zapytania do katalogu zewnętrznego, wybierz w Eksploratorze katalogu opcję Wymuś materializację lub ustaw opcję katalogu forceMaterialization na true. Nie musisz aktualizować pojedynczych zapytań.
Opcja forceMaterialization w katalogu jest obsługiwana na wymaganych zasobach obliczeniowych, z tym zastrzeżeniem, że klastry muszą działać w środowisku Databricks Runtime 16.4 LTS lub nowszym.
Aby włączyć materializację w przypadku pojedynczego zapytania, ustaw opcję materializationEnabled na true po nazwie tabeli BigQuery:
SELECT * FROM <catalog-name>.<schema-name>.<table-name>
WITH ('materializationEnabled' 'true');
Domyślnie zestaw danych do materializacji jest automatycznie tworzony, gdy jest to potrzebne. Niestandardowy zestaw danych można określić przy użyciu materializationDataset opcji wykazu podczas tworzenia lub zmieniania wykazu obcego. Jest to przydatne, jeśli konto usługi nie ma uprawnień do tworzenia zestawów danych lub chcesz kontrolować miejsce przechowywania tymczasowych tabel materializacji. Na przykład:
CREATE FOREIGN CATALOG my_catalog USING CONNECTION my_bq_connection
OPTIONS (materializationDataset 'my_materialization_dataset');
Aby zaktualizować istniejący wykaz, uruchom polecenie:
ALTER CATALOG my_catalog OPTIONS (materializationDataset 'my_materialization_dataset');
Odczytywanie tabel zewnętrznych BigQuery
Możesz wysyłać zapytania do tabel zewnętrznych BigQuery, w tym tabel BigLake i tabel opartych na Cloud Storage, bezpośrednio z poziomu swojego przepływu pracy. Te tabele są automatycznie zmaterializowane przed wykonaniem zapytania, co umożliwia pełny dostęp do ich zawartości bez dodatkowej konfiguracji.
Obsługiwane tabele zewnętrzne
Obsługiwane są tabele zewnętrzne BigLake i oparte na pamięci masowej w chmurze.
- Tabele BigLake odwołują się do danych przechowywanych w magazynie w chmurze i obejmują szczegółową kontrolę dostępu zarządzaną za pośrednictwem trybu BigQuery.
- Zewnętrzne tabele w chmurze odwołują się bezpośrednio do plików za pomocą identyfikatorów URI.
Podczas wykonywania zapytań dotyczących tych tabel system materializuje dane, tak aby zapytanie było uruchamiane na wbudowanym magazynie BigQuery w celu zapewnienia pełnej obsługi funkcji SQL i optymalnej wydajności.
Więcej informacji znajdziesz w dokumentacji BigQuery dotyczącej tabel BigLake i tabel zewnętrznych Cloud Storage.
Obsługiwane wypychania
Obsługa mechanizmu pushdown zależy od tego, czy materializacja jest włączona. Niektóre operacje są automatycznie przekazywane do warstwy obliczeniowej BigQuery, a inne wymagają materializacji.
Następujące wypychania są obsługiwane bez materializacji:
- Filtry, przekazywane jako ograniczenia wierszy interfejsu BigQuery Storage API (tylko proste predykaty — porównania kolumn z literałami,
IN,IS NULL,LIKEiANDlubORich kombinacje). Filtry odwołujące się do operatorów lub funkcji wymienionych poniżej wymagają materializacji. - Projekcje
Następujące dodatkowe wypychania są obsługiwane z włączoną materializacją. W przypadku materializacji filtry są kompilowane do języka SQL zamiast ograniczeń wiersza interfejsu API usługi BigQuery Storage, dzięki czemu mogą one dodatkowo zawierać następujące operatory i funkcje:
- Ograniczenie
- Przesunięcie, gdy jest stosowane z limitem
- Agregacje
- Sortowanie z użyciem limitu
- Łączenia (środowisko Databricks Runtime w wersji 16.1 lub nowszej)
- Operatory porównania, boolowskie, bitowe i arytmetyczne (operatory arytmetyczne są przenoszone niżej tylko wtedy, gdy włączony jest tryb ANSI)
- Funkcje matematyczne (
ABS,FLOOR) — częściowa obsługa, tylko wyrażenia filtrujące - Funkcje ciągów (
CONCAT,UPPER,LOWER,LENGTH,TRIM,LTRIM,RTRIM) — częściowa obsługa, tylko dla wyrażeń filtrujących -
Contains,Startswith,Endswith - Funkcje daty, godziny i znacznika czasu (
DATE_TRUNCorazEXTRACTdla roku, kwartału, miesiąca, dnia, godziny i minuty) — częściowa obsługa, wyrażenia filtru - Różne funkcje (
COALESCE,Cast,CASE WHEN,IFi dostęp do elementów tablicy) — częściowa obsługa, tylko wyrażenia filtrujące
Następujące wypychania nie są obsługiwane:
- Funkcje okna
Mapowanie typu danych
W poniższej tabeli przedstawiono mapowanie typu danych BigQuery na Spark.
| Typ BigQuery | Typ Spark |
|---|---|
BIGNUMERIC, NUMERIC |
DecimalType* |
INT64 |
LongType |
FLOAT64 |
DoubleType |
ARRAY, GEOGRAPHY, , JSON, STRINGSTRUCT |
VarcharType |
BYTES |
BinaryType |
BOOL |
BooleanType |
DATE |
DateType |
DATETIME |
TimestampNTZType, z wyjątkiem StringType w środowisku Databricks Runtime 16.4 do wersji 17.x** |
TIME, TIMESTAMP |
TimestampType/TimestampNTZType |
Dowolny typ obsługujący tryb REPEATED |
ArrayType odpowiedniego typu Spark*** |
* BigQuery BIGNUMERIC ma precyzję do 76 cyfr, która przekracza maksymalną DecimalType precyzję platformy Spark wynoszącą 38. Domyślnie BIGNUMERIC mapuje na DecimalType(38, 38). Aby skonfigurować skalę, użyj bigNumericDefaultScale opcji katalogu. Dozwolone wartości to [0, 38]. Na przykład bigNumericDefaultScale = '10' mapuje BIGNUMERIC na DecimalType(38, 10). BigQuery NUMERIC mapuje na zadeklarowaną precyzję i skalę.
** Łącznik rozpoczął korzystanie z interfejsu API usługi BigQuery Storage w środowisku Databricks Runtime 16.4. W Databricks Runtime od wersji 16.4 do 17.x interfejs Storage API mapował BigQuery DATETIME na typ Spark StringType zamiast TimestampNTZType. Środowisko Databricks Runtime 18.0 przywraca mapowanie TimestampNTZType.
*** W BigQuery kolumna z trybem REPEATED jest mapowana na obiekt Spark ArrayType, który zawiera odpowiadający typ Spark. Na przykład kolumna BigQuery REPEATED STRING jest mapowana na ArrayType(VarcharType), a kolumna BigQuery REPEATED INT64 jest mapowana na ArrayType(LongType).
Podczas odczytywania z BigQuery, BigQuery Timestamp jest mapowany na Spark TimestampType jeśli preferTimestampNTZ = false (wartość domyślna). Funkcja BigQuery Timestamp jest mapowana na TimestampNTZType jeśli preferTimestampNTZ = true.
Uwaga
Kolumny BigQuery INTERVAL nie są obecnie obsługiwane. Obca tabela zawierająca kolumnę INTERVAL zawodzi, gdy jej schemat się ładuje, więc nie możesz opisać, zapytać ani przyswoić tabeli. Tabele bez kolumny INTERVAL pozostają niezmienione.
Rozwiązywanie problemów
W poniższej sekcji opisano typowy błąd i jego rozwiązanie podczas korzystania z łącznika BigQuery.
Error creating destination table using the following query [<query>]
Typowa przyczyna: Konto usługi używane w połączeniu nie ma przypisanej roli BigQuery User.
Rozwiązanie:
- Przyznaj użytkownikowi BigQuery rolę konta usługi używanego przez połączenie. Ta rola jest wymagana do utworzenia zestawu danych materializacji, który tymczasowo przechowuje wyniki zapytań.
- Uruchom ponownie zapytanie.