Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting
Hinzufügen von Data-Lake-Tabellen zu einem Datashare
Mit einem Datashare kann ein Produzent sehr granulare Datenbankobjekte wie Schemata und Tabellen auf sichere Weise für Konsumenten im selben AWS-Konto oder in verschiedenen Konten freigeben. Der Produzent kann Objekte auch regionsübergreifend freigeben. In diesem Thema wird beschrieben, wie Objekte aus einem Data Lake, insbesondere aus dem AWS Glue-Datenkatalog, zu einem Datashare hinzugefügt werden. Das Thema beschreibt zwei Anwendungsfälle:
-
Hinzufügen einer spätbindenden Ansicht zu einem Datashare, die auf eine Tabelle aus einem Data Lake verweist: Dies ist für Konsumenten praktisch, da die vorläufige Konfiguration, wie das Definieren von Berechtigungen für die externen Quelldaten (z. B. mit Lake Formation) wahrscheinlich bereits abgeschlossen ist. Ein zusätzlicher Vorteil besteht darin, dass eine zu einem Datashare hinzugefügte Ansicht Tabellen aus dem Data Lake mit nativen Redshift-Tabellen verbinden kann.
-
Direktes Hinzufügen einer Tabelle aus einem externen Schema zu einem Datashare: So werden Objekte aus dem Data Lake für Konsumenten ohne zusätzliche Ebenen oder Logik verfügbar. Konsumenten können die Tabelle abfragen oder sie mit Tabellen im Konsumenten verbinden.
Diese Anwendungsfälle treten auf, wenn Sie mit CREATE EXTERNAL SCHEMA auf eine Tabelle aus dem AWS-Datenkatalog in Redshift verweisen. Jede Tabelle aus dem AWS-Datenkatalog kann die Quelle sein.
Anmerkung
Data-Lake-Tabellen, die Sie einem Datashare hinzufügen, können bei Lake Formation registrierte Tabellen und AWS Glue-Datenkatalogtabellen enthalten.
Erstellen eines externen Schemas und einer externen Tabelle
In den folgenden Abschnitten erstellen Sie ein externes Schema und eine externe Tabelle, um sie dem Datashare hinzuzufügen. Dies sind vorläufige Schritte. Wenn Sie diese Schritte bereits ausgeführt haben, können Sie diesen Abschnitt überspringen.
-
Erstellen Sie auf dem Produzenten ein externes Schema, das auf die in Amazon S3 gespeicherten Data-Lake-Daten verweist. Das externe Schema verweist auf den AWS-Glue-Datenkatalog. Die Rolle und die Region im Beispiel sind lediglich Beispiele:
CREATE EXTERNAL SCHEMA external_schema_name FROM DATA CATALOG DATABASE 'glue_database_name' IAM_ROLE 'arn:aws:iam::123456789012:role/sample-role' REGION 'us-east-1'; -
Erstellen Sie eine Data-Lake-Tabelle im externen Schema.
CREATE EXTERNAL TABLE external_schema_name.sales( salesid INTEGER, sellerid INTEGER, buyerid INTEGER, saledate DATE, pricepaid DECIMAL(8,2)) ROW FORMAT delimited FIELDS TERMINATED BY '\t' STORED AS textfile LOCATION 's3://redshift-downloads/tickit/spectrum/sales/';Der Beispielcode enthält die den
LOCATION. Er muss das Formats3://{bucket_name}/{folder}/aufweisen, wobei der Ordner angegeben wird. Der Name des Ordners muss aus mindestens einem Zeichen bestehen. Sie können optional Unterordner einfügen. Weitere Beispiele für das Erstellen von Tabellen in einem Data Lake finden Sie unter Beispiele für CREATE EXTERNAL TABLE.Anmerkung
Die Freigabe wird nur für Tabellen unterstützt, bei denen die IAM-Rolle im Produzenten SELECT-Zugriff auf die jeweilige Tabelle hat.
Hinzufügen einer spätbindenden Ansicht, die eine Data-Lake-Tabelle auf ein Datashare verweist
Angenommen, Sie möchten Tabellen erstellen, die auf einem externen Schema aus dem AWS-Datenkatalog basieren, und diese Tabellen zu einem Datashare hinzufügen. Die am häufigsten verwendete Methode besteht im Hinzufügen einer spätbindenden Redshift-Ansicht, die auf die von Ihnen erstellte Tabelle verweist, die wiederum Daten aus dem Data Lake enthält. Das folgende Verfahren zeigt die Schritte:
-
Erstellen Sie eine spätbindende Ansicht, die auf die externe Tabelle verweist, die Sie zuvor erstellt haben:
CREATE VIEW lbv AS select * from external_schema_name.sales, other_schema.t1 WITH NO SCHEMA BINDING; -
Fügen Sie dem Datashare das Ansichtsschema hinzu. Dies ist das lokale Schema, das die spätbindende Ansicht enthält.
ALTER DATASHARE dsx_datashare ADD SCHEMA public; -
Fügen Sie dem Datashare das Schema hinzu, das die Tabelle enthält, auf die in der spätbindenden Ansicht verwiesen wird. Das Hinzufügen des Schemas ist für alle Basistabellen erforderlich, auf die in einer Ansicht verwiesen wird, die einem Datashare hinzugefügt wurde, unabhängig davon, ob das Schema lokale Datenbankobjekte oder Objekte aus einem Data Lake enthält. Beachten Sie, dass Sie dieses Schema hinzufügen müssen, bevor Sie die spätbindende Ansicht hinzufügen.
ALTER DATASHARE dsx_datashare ADD SCHEMA external_schema_name; ALTER DATASHARE dsx_datashare ADD SCHEMA other_schema; -
Fügen Sie die Ansicht mithilfe eines SQL-Befehls zum Datashare hinzu. Beachten Sie, dass der Tabellenname das Schemapräfix enthält.
ALTER DATASHARE my_datashare ADD TABLE public.lbv; -
Überprüfen Sie, ob die Ansicht und die Schemata dem Datashare erfolgreich hinzugefügt wurden:
SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare'; -
Der Konsumenten-Administrator erstellt eine Datenbank aus dem Datashare und gewährt Konsumenten-Benutzern Nutzungsrechte.
Nachdem Sie die Schritte abgeschlossen haben, können Konsumenten-Benutzer der Datenbank mit Zugriff auf die Datashare-Ansicht die Daten abfragen.
Direktes Hinzufügen einer Data-Lake-Tabelle zu einem Datashare
Das Hinzufügen einer Tabelle in einem externen Schema zu einem Datashare ist dem Hinzufügen einer Ansicht vergleichbar. Dies ist gut für Anwendungsfälle geeignet, in denen ein Konsument die Data-Lake-Tabelle im ursprünglichen Zustand abfragen möchte oder in denen ein Konsument sie mit Tabellen im Konsumenten-Data-Warehouse verbinden möchte. Die folgenden Schritte zeigen Ihnen, wie Sie mithilfe von SQL einem Datashare eine Data-Lake-Tabelle hinzufügen.
-
Erstellen Sie ein externes Schema und eine externe Tabelle wie im ersten Abschnitt dieses Themas beschrieben.
-
Suchen Sie nach vorhandenen Tabellen im externen Schema, um sicherzustellen, dass die von Ihnen erstellte Tabelle verfügbar ist:
SELECT * FROM svv_external_tables WHERE schemaname = 'external_schema_name'; -
Fügen Sie dem Datashare das externe Schema hinzu:
ALTER DATASHARE my_datashare ADD SCHEMA external_schema_name; -
Fügen Sie dem Datashare die externe Tabelle hinzu. Beachten Sie, dass der Tabellenname das Schemapräfix enthält:
ALTER DATASHARE my_datashare ADD TABLE external_schema_name.sales; -
Überprüfen Sie, ob die Tabelle dem Datashare erfolgreich hinzugefügt wurde:
SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';Eine detailliertere Anleitung finden Sie unter Freigeben von Lesedaten innerhalb eines AWS-Kontos.
-
Im Konsumenten, d. h. der Datenbank, die die freigegebenen Daten empfängt, ordnet der Administrator das Datashare zu, um freigegebene Tabellen für Benutzer zur Abfrage verfügbar zu machen. Weitere Informationen zur Ausführung dieses Schritts finden Sie unter Verwalten von Datashares von anderen Konten als Konsument.
Nachdem die Administratoren die Schritte abgeschlossen haben, können Datenbankbenutzer im Konsumenten Abfragen verfassen, um Daten aus der freigegebenen Tabelle abzurufen und sie mit anderen Tabellen im Konsumenten zu verbinden.
Nutzungshinweise für das Hinzufügen von Data Lake-Objekten zu einem Datashare
Es gibt mehrere Punkte, die Sie beachten sollten, wenn Sie Tabellen und Ansichten aus einem Data Lake in einem Datashare verwenden:
-
Protokollierung mit AWS CloudTrail: Das Konto des Datenproduzenten kann AWS CloudTrail-Protokolle verwenden, um zu überprüfen, wann auf Data-Lake-Tabellen zugegriffen wird, die über ein Datashare freigegeben wurden:
-
Verwendung von Protokolldaten zur Steuerung des Datenzugriffs: Die CloudTrail-Protokolle zeichnen Details dazu auf, wer auf freigegebene Tabellen zugreift, einschließlich Redshift-Datashare-Produzenten und -Konsumenten. Die Bezeichner sind im Feld
ExternalIdunter denAssumeRole-CloudTrail-Protokollen verfügbar. Der Datenbesitzer kann mithilfe von Aktionen zusätzliche Einschränkungen für den Datenzugriff in einer IAM-Richtlinie konfigurieren. Weitere Informationen zur Definition des Datenzugriffs mithilfe von Richtlinien finden Sie unter Zugriff auf AWS-Konten von externen Benutzern.
-
-
Sicherheit und Benutzerberechtigungen: Für bei Lake Formation registrierte Tabellen werden Amazon-S3-Ressourcen von Lake Formation gesichert und mit den von Lake Formation bereitgestellten Anmeldeinformationen zur Verfügung gestellt.
Überlegungen zur Abrechnung für das Hinzufügen von Data-Lake-Objekten zu einem Datashare
Im Folgenden wird beschrieben, wie die Kosten für das Speichern und Scannen von Data-Lake-Objekten in einem Datashare zugeordnet werden:
-
Wenn ein Konsument freigegebene Objekte aus einem Data Lake abfragt, werden die Kosten für das Scannen dem Consumer berechnet.
-
Wenn es sich beim Konsumenten um einen bereitgestellten Cluster handelt, scannt Redshift Amazon-S3-Daten mithilfe von Redshift Spectrum. Daher werden die Spectrum-Kosten dem Konsumentenkonto berechnet.
-
Wenn es sich beim Konsumenten um eine Arbeitsgruppe in Amazon Redshift Serverless handelt, fallen für Spectrum keine separaten Kosten an.
-
-
Die Amazon-S3-Kosten für Speicher und Betrieb, z. B. für das Auflisten von Buckets, werden dem Konto in Rechnung gestellt, dem die Amazon-S3-Buckets jeweils gehören.
Weitere Informationen zur Abrechnung für Amazon Redshift Serverless finden Sie unter Abrechnung für Amazon Redshift Serverless. Weitere Abrechnungs- und Preisinformationen finden Sie unter Amazon-Redshift-Preise