Share via


Köra federerade frågor på Amazon Redshift

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Den här artikeln beskriver hur du konfigurerar Lakehouse Federation för att köra federerade frågor på Kör frågor på Amazon Redshift-data som inte hanteras av Azure Databricks. Mer information om Lakehouse Federation finns i Vad är Lakehouse Federation.

Om du vill ansluta till dina Run-frågor i Amazon Redshift-databasen med Lakehouse Federation måste du skapa följande i azure Databricks Unity Catalog-metaarkivet:

  • En anslutning till dina Run-frågor i Amazon Redshift-databasen.
  • En sekundär katalog som speglar dina Run-frågor på Amazon Redshift-databasen i Unity Catalog så att du kan använda Unity Catalog-frågesyntax och datastyrningsverktyg för att hantera Azure Databricks-användaråtkomst till databasen.

Innan du börjar

Krav för arbetsyta:

  • Arbetsytan är aktiverad för Unity Catalog.

Beräkningskrav:

  • Nätverksanslutning från ditt Databricks Runtime-kluster eller SQL-lager till måldatabassystemen. Se Nätverksrekommendationer för Lakehouse Federation.
  • Azure Databricks-kluster måste använda Databricks Runtime 13.3 LTS eller senare och delat eller enanvändarläge.
  • SQL-lager måste vara Pro eller Serverless.

Behörigheter som krävs:

  • Om du vill skapa en anslutning måste du vara metaarkivadministratör eller användare med behörigheten CREATE CONNECTION på Unity Catalog-metaarkivet som är kopplat till arbetsytan.
  • Om du vill skapa en extern katalog måste du ha behörigheten CREATE CATALOG för metaarkivet och antingen vara ägare till anslutningen eller ha behörighet för CREATE FOREIGN CATALOG anslutningen.

Ytterligare behörighetskrav anges i varje aktivitetsbaserat avsnitt som följer.

Skapa en 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 CREATE CONNECTION SQL-kommandot i en Azure Databricks-notebook-fil eller Databricks SQL-frågeredigeraren.

Behörigheter som krävs: Metaarkivadministratör eller användare med behörighet.CREATE CONNECTION

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på KatalogikonKatalog.
  2. I den vänstra rutan expanderar du menyn Externa data och väljer Anslut ions.
  3. Klicka på Skapa anslutning.
  4. Ange ett användarvänligt Anslut ionsnamn.
  5. Välj en Anslut ionstyp av Redshift.
  6. Ange följande anslutningsegenskaper för redshift-instansen.
    • Värd: Till exempel redshift-demo.us-west-2.redshift.amazonaws.com
    • Port: Till exempel 5439
    • Användare: Till exempel redshift_user
    • Lösenord: Till exempel password123
  7. (Valfritt) Klicka på Testa anslutning för att bekräfta att den fungerar.
  8. (Valfritt) Lägg till en kommentar.
  9. Klicka på Skapa.

SQL

Kör följande kommando i en notebook-fil eller Databricks SQL-frågeredigeraren.

CREATE CONNECTION <connection-name> TYPE redshift
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

Vi rekommenderar att du använder Azure Databricks-hemligheter i stället för klartextsträngar för känsliga värden som autentiseringsuppgifter. Till exempel:

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>')
)

Information om hur du konfigurerar hemligheter finns i Hemlighetshantering.

Skapa en sekundär katalog

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. Om du vill skapa en sekundär katalog använder du en anslutning till datakällan som redan har definierats.

Om du vill skapa en sekundär katalog kan du använda Catalog Explorer eller CREATE FOREIGN CATALOG SQL-kommandot i en Azure Databricks-notebook-fil eller Databricks SQL-frågeredigeraren.

Behörigheter som krävs:CREATE CATALOG behörighet för metaarkivet och antingen ägarskap för anslutningen eller behörigheten CREATE FOREIGN CATALOG för anslutningen.

Katalogutforskaren

  1. På din Azure Databricks-arbetsyta klickar du på KatalogikonKatalog.
  2. Klicka på knappen Skapa katalog .
  3. I dialogrutan Skapa en ny katalog anger du ett namn för katalogen och väljer en typ av sekundär.
  4. Välj den Anslut ion som ger åtkomst till databasen som du vill spegla som en Unity Catalog-katalog.
  5. Ange namnet på den databas som du vill spegla som en katalog.
  6. Klicka på Skapa.

SQL

Kör följande SQL-kommando i en notebook- eller Databricks SQL-redigerare. Objekt inom hakparenteser är valfria. Ersätt platshållarvärdena:

  • <catalog-name>: Namn på katalogen i Azure Databricks.
  • <connection-name>: Anslutningsobjektet som anger autentiseringsuppgifterna för datakälla, sökväg och åtkomst.
  • <database-name>: Namnet på den databas som du vill spegla som en katalog i Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

Pushdowns som stöds

Följande pushdowns stöds:

  • Filter
  • Projektioner
  • Gräns
  • Kopplingar
  • Aggregat (Genomsnitt, Antal, Max, Min, StddevPop, StddevSamp, Sum, VarianceSamp)
  • Funktioner (Strängfunktioner och andra diverse funktioner, till exempel Alias, Cast, SortOrder)
  • Sortering

Följande pushdowns stöds inte:

  • Windows-funktioner

Datatypsmappningar

När du läser från Redshift till Spark mappar datatyper på följande sätt:

Redshift-typ Spark-typ
numeric Decimaltyp
int2, int4 IntegerType
int8, oid, xid LongType
float4 FloatType
dubbel precision, float8, money DoubleType
bpchar, char, tecken varierande, namn, super, text, tid, varchar StringType
bytea, geometri, varbyte BinaryType
bit, bool BooleanType
datum DateType
tabstime, tid, tid med tidszon, timetz, tid utan tidszon, tidsstämpel med tidszon, tidsstämpel, tidsstämpel, tidsstämpel, tidsstämpel utan tidszon* TidsstämpelTyp/tidsstämpelNTZType

*När du läser från Redshift mappas Redshift Timestamp till Spark TimestampType om infer_timestamp_ntz_type = false (standard). Redshift Timestamp mappas till TimestampNTZType om infer_timestamp_ntz_type = true.