Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här sidan beskriver hur du konfigurerar Lakehouse Federation för att köra federerade frågor på Oracle-data som inte hanteras av Azure Databricks. Mer information om Lakehouse Federation finns i Ansluta till externa databaser och kataloger
Om du vill ansluta till Oracle-databasen med Lakehouse Federation måste du skapa följande i metaarkivet i Azure Databricks Unity Catalog (arbetsytor som skapats efter den 9 november 2023 har redan ett Unity Catalog-metaarkiv etablerat automatiskt):
- En anslutning till en Oracle-databas.
- En utländsk katalog som speglar din Oracle-databas i Unity Catalog så att du kan använda Unity Catalog-frågesyntax och verktyg för datastyrning för att hantera Azure Databricks-användaråtkomst till databasen.
Limitations
Lakehouse Federation stöder endast TLS-anslutningar (Transport Layer Security) till Oracle Cloud. Anslutningar till andra Oracle-databaser använder inbyggd nätverkskryptering (NNE).
Det finns ett känt problem när du ansluter till instanserna 11.2.0.3.0 och senare som inte har ett tidszonsvärde (
Etc/UTCFel:ORA-01882: timezone region not found).- Lösning: Ange
spark.databricks.connector.oracle.timezoneAsRegiontillfalse. Detta mappar direkt till JDBC-drivrutinsegenskapenoracle.jdbc.timezoneAsRegion. På klassisk beräkning kan du ange den här konfigurationen i spark-klustrets konfiguration. På Databricks SQL-lager och serverlös beräkning kontaktar du Azure Databricks support för att tillämpa den här inställningen.
- Lösning: Ange
Varning
Den tillfälliga lösningen kan orsaka att sommartid (DST) hanteras felaktigt. Uppdatera Oracle-databasens tidszonsfiler för en permanent korrigering. Se Oracle-stöd – ORA-01882.
License
Oracle-drivrutinen och andra nödvändiga Oracle-jars styrs av FDHUT-licensen utan klick.
Innan du börjar
Innan du börjar kontrollerar du att du uppfyller kraven i det här avsnittet.
Databricks-krav
Krav för arbetsyta:
- Arbetsytan är aktiverad för Unity Catalog. Arbetsytor som skapats efter den 9 november 2023 aktiveras automatiskt för Unity Catalog, inklusive automatisk metaarkivetablering. Du behöver inte skapa ett metadatalager manuellt, om inte arbetsytan är äldre än den automatiska aktiveringen och inte har aktiverats för Unity Catalog. Se Kom igång med Unity Catalog.
Beräkningskrav:
- Nätverksanslutning från beräkningsresursen till måldatabassystemen. Se Nätverksrekommendationer för Lakehouse Federation.
- Azure Databricks-beräkning måste använda Databricks Runtime 16.1 eller senare och standard - eller dedikerat åtkomstläge.
- SQL-lager måste vara pro eller serverlösa och måste använda 2024.50 eller senare.
Behörigheter som krävs:
- Om du vill skapa en anslutning måste du vara metaarkivadministratör eller användare med
CREATE CONNECTIONbehörighet i Unity Catalog-metaarkivet som är kopplat till arbetsytan. I arbetsytor som aktiverades automatiskt för Unity Catalog har arbetsyteadministratörer behörighetenCREATE CONNECTIONsom standard. - Om du vill skapa en extern katalog måste du ha behörigheten
CREATE CATALOGi metaarkivet och antingen vara ägare till anslutningen eller haCREATE FOREIGN CATALOGbehörighet för anslutningen. I arbetsytor som aktiverades automatiskt för Unity Catalog har arbetsyteadministratörer behörighetenCREATE CATALOGsom standard.
Ytterligare behörighetskrav anges i varje aktivitetsbaserat avsnitt som följer.
Oracle-krav
För anslutningar som använder intern nätverkskryptering måste du aktivera NNE på serversidan (ACCEPTED lägsta nivå). Se Konfigurera nätverksdatakryptering i Oracle-dokumentationen. Detta gäller inte för Oracle Cloud-anslutningar som använder TLS i stället.
Skapa en Azure Databricks-anslutning
En anslutning anger en sökväg och autentiseringsuppgifter för åtkomst till ett externt databassystem. Om du vill skapa en anslutning kan du använda Catalog Explorer eller kommandot CREATE CONNECTION SQL i en Azure Databricks-notebook-fil eller Databricks SQL-frågeredigeraren.
Note
Du kan också använda Databricks REST API eller Databricks CLI för att skapa en anslutning. Se kommandona POST /api/2.1/unity-catalog/connections och Unity Catalog.
Behörigheter som krävs: metaarkivadministratör eller användare med CREATE CONNECTION behörighet.
Katalogutforskaren
- På Azure Databricks-arbetsytan klickar du på
Katalog.
- Klicka på
Anslut och klicka sedan på Anslutningar.
- Klicka på knappen Skapa anslutning .
- På sidan Anslutningsgrunder i guiden Konfigurera anslutning, ange ett användarvänligt Anslutningsnamn.
- Välj en anslutningstyp för Oracle.
- (Valfritt) Lägg till en kommentar.
- Klicka på Nästa.
- På sidan Authentication anger du följande för Oracle-instansen:
-
Host: Till exempel
oracle-demo.123456.rds.amazonaws.com -
Port: Till exempel
1521 -
Användare: Till exempel
oracle_user -
Lösenord: Till exempel
password123 -
Krypteringsprotokoll:
Native Network Encryption(standard) ellerTransport Layer Security -
Servercertifikat som tillhandahålls av användaren: Valfritt. Det PEM-kodade publika certifikatet för din Oracle-instans, som används för att verifiera serverns identitet under TLS-handskakningen. Ange det när din server presenterar ett certifikat från en privat eller intern certifikatutfärdare som inte finns i standardförtroendelagringen. Ett användartillhandahållet servercertifikat kräver ett krypteringsprotokoll på
Transport Layer Security, vilket Lakehouse Federation endast stöder för Oracle Cloud-anslutningar. Värdnamnsverifiering utförs som en del av TLS-handskakningen: anslutningen misslyckas om värdnamnet på certifikatet inte matchar det begärda värdnamnet.
-
Host: Till exempel
- Klicka på Skapa anslutning.
- På catalog basics-sidan anger du ett namn för den externa katalogen. En extern katalog speglar en databas i ett externt datasystem så att du kan köra frågor mot och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog.
- (Valfritt) Klicka på Testa anslutningen för att bekräfta att den fungerar.
- Klicka på Skapa katalog.
- På sidan Access väljer du de arbetsytor där användarna kan komma åt katalogen som du skapade. Du kan välja Alla arbetsytor har åtkomsteller klicka på Tilldela till arbetsytor, välj arbetsytor och klicka sedan på Tilldela.
- Ändra ägaren som ska kunna hantera åtkomsten till alla objekt i katalogen. Börja skriva en princip i textrutan och klicka sedan på principen i de returnerade resultaten.
- Bevilja privilegier i katalogen. Klicka på Bevilja:
- Ange principals vem som ska ha åtkomst till objekt i katalogen. Börja skriva en princip i textrutan och klicka sedan på principen i de returnerade resultaten.
- Välj förinställningarna för privilegier som ska beviljas varje huvudaktör . Alla kontoanvändare beviljas
BROWSEsom standard.- Välj dataläsare från den nedrullningsbara menyn för att bevilja
readbehörigheter för objekt i katalogen. - Välj dataredigeraren från den nedrullningsbara menyn för att bevilja
readochmodifybehörigheter för objekt i katalogen. - Välj de behörigheter som ska beviljas manuellt.
- Välj dataläsare från den nedrullningsbara menyn för att bevilja
- Klicka på Tillåt.
- Klicka på Nästa.
- På sidan metadata anger du taggar för nyckel/värde-par. Mer information finns i Tillämpa taggar på skyddsbara objekt i Unity Catalog.
- (Valfritt) Lägg till en kommentar.
- Klicka på Spara.
SQL
Kör följande kommando i en notebook-fil eller Databricks SQL-frågeredigeraren:
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>',
encryption_protocol '<protocol>' -- optional
);
Databricks rekommenderar att du använder Azure Databricks hemligheter i stället för oformaterade strängar för känsliga värden som autentiseringsuppgifter. Till exempel:
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
)
För att verifiera serverns identitet under TLS-handskakningen (till exempel när din Oracle-server presenterar ett certifikat från en privat eller intern certifikatutnämnare som inte finns i standardförtroendelagringen), skicka serverns PEM-kodade certifikat i alternativet userProvidedServerCertificate . Ett användartillhandahållet servercertifikat kräver encryption_protocol att man sätter till TLS, vilket Lakehouse Federation endast stöder för Oracle Cloud-anslutningar.
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>'
)
Om du måste använda textsträngar i SQL-kommandon för notebook-filer bör du undvika att trunkera strängen genom att undvika specialtecken som $ med \. Till exempel: \$.
Information om hur du konfigurerar hemligheter finns i Hemlighetshantering.
Skapa en utländsk katalog
Note
Om du använder användargränssnittet för att skapa en anslutning till datakällan inkluderas skapande av utländsk katalog och du kan hoppa över det här steget.
En extern katalog speglar en databas i ett externt datasystem så att du kan köra frågor mot och hantera åtkomst till data i databasen med hjälp av Azure Databricks och Unity Catalog. För att skapa en utländsk katalog använder du en anslutning till datakällan som redan har blivit definierad.
Om du vill skapa en utländsk katalog kan du använda Catalog Explorer eller kommandot CREATE FOREIGN CATALOG SQL i en Azure Databricks-anteckningsbok eller SQL-frågeredigeraren. Du kan också använda Databricks REST API eller Databricks CLI för att skapa en katalog. Se kommandona POST /api/2.1/unity-catalog/catalogs och Unity Catalog.
Behörigheter som krävs:CREATE CATALOG behörighet för metastore och antingen ägarskap av anslutningen eller CREATE FOREIGN CATALOG behörighet för anslutningen.
Katalogutforskaren
På Azure Databricks-arbetsytan klickar du på
Katalog för att öppna Katalogutforskaren.
Längst upp i fönstret Catalog klickar du på ikonen
ikonen Lägg till och väljer Lägg till en katalog på menyn.Från sidan Snabbåtkomst klickar du på knappen Kataloger och klickar sedan på knappen Skapa katalog.
Följ anvisningarna för att skapa externa kataloger i Skapa kataloger.
SQL
Kör följande SQL-kommando i en notebook- eller SQL-frågeredigerare. Objekt inom hakparenteser är valfria. Ersätt platshållarvärdena:
-
<catalog-name>: Namn på katalogen i Azure Databricks. -
<connection-name>: Det anslutningsobjektet som anger autentiseringsuppgifterna för datakälla, sökväg och åtkomst. -
<service-name>: Tjänstnamn som du vill spegla som en katalog i Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');
Pushdowns som stöds
I följande tabell visas de pushdown-åtgärder som stöds för Oracle, tillsammans med den beräkning som krävs för var och en.
| Pushdown | Beräkning som stöds |
|---|---|
| Aggregates |
|
| Aritmetiska operatorer (till exempel +, -, *, %, /) – stöds inte om ANSI är inaktiverat |
|
| Booleska operatorer (till exempel =, <=>, <, <=, >, >=) |
|
| Innehåller, Börjar med, Slutar med |
|
| Filters |
|
| Limit |
|
| Matematiska funktioner (ABS, FLOOR – partiellt stöd, endast filteruttryck) |
|
| Diverse funktioner (till exempel Alias, Cast, SortOrder – partiellt stöd, endast filteruttryck) |
|
| Offset |
|
| Projections |
|
| Sortering, när den används med gräns |
|
| Strängfunktioner (UPPER, LOWER, CHAR_LENGTH, TRIM, RTRIM, LTRIM, CONCAT, RPAD, LPAD – partiellt stöd, endast filteruttryck) |
|
| Ansluter sig |
|
| Fönsterfunktioner |
|
Datatypsmappningar
När du läser från Oracle till Spark, så mappar datatyper på följande sätt:
| Oracle-typ | Sparktyp |
|---|---|
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 och TIMESTAMP mappas till Spark TimestampType om spark.sql.timestampType = TIMESTAMP_LTZ (standard). De mappas till TimestampNTZType om spark.sql.timestampType = TIMESTAMP_NTZ.
**
NUMBER utan att ange precision mappas till DecimalType(38, 10) eftersom det inte finns något stöd för en ren flyttal decimal i Spark.