Delta Lake und Lake Formation - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Delta Lake und Lake Formation

Die EMR Amazon-Versionen 6.15.0 und höher bieten Unterstützung für eine differenzierte Zugriffskontrolle, die auf Delta Lake basiert, wenn Sie Daten AWS Lake Formation mit Spark lesen und schreiben. SQL Amazon EMR unterstützt mit Delta Lake die Zugriffskontrolle auf Tabellen-, Zeilen-, Spalten- und Zellenebene. Mit dieser Funktion können Sie Snapshot-Abfragen für copy-on-write Tabellen ausführen, um den neuesten Snapshot der Tabelle zu einem bestimmten Commit- oder Komprimierungszeitpunkt abzufragen.

Führen Sie den folgenden Befehl aus, um Delta Lake mit Lake Formation zu verwenden.

spark-sql \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog \ --conf spark.sql.catalog.spark_catalog.lf.managed=true

Wenn Sie möchten, dass Lake Formation einen Datensatzserver zur Verwaltung Ihres Spark-Katalogs verwendet, legen Sie spark.sql.catalog.<managed_catalog_name>.lf.managed den Wert auf true fest.

Die folgende Unterstützungsmatrix listet einige Kernfeatures von Delta Lake mit Lake Formation auf:

Kopieren Sie beim Schreiben Beim Lesen zusammenführen (MoR)

Snapshot-Abfragen — Spark SQL

Leseoptimierte Abfragen — Spark SQL

Inkrementelle Abfragen

Nicht unterstützt

Nicht unterstützt

Zeitreiseabfragen

Nicht unterstützt

Nicht unterstützt

Metadaten-Tabellen

DMLINSERTBefehle

DDLBefehle

Spark-Datenquellenabfragen

Spark-Datenquellenschreibvorgänge

Erstellen einer Delta Lake-Tabelle im AWS Glue Data Catalog

Amazon EMR mit Lake Formation unterstützt keine DDL Befehle und die Erstellung von Delta-Tabellen. Gehen Sie wie folgt vor, um Tabellen im AWS Glue-Datenkatalog zu erstellen.

  1. Verwenden Sie das folgende Beispiel, um eine Delta-Tabelle zu erstellen. Stellen Sie sicher, dass Ihr S3-Standort existiert.

    spark-sql \ --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" \ --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog" > CREATE DATABASE if not exists <DATABASE_NAME> LOCATION 's3://<S3_LOCATION>/transactionaldata/native-delta/<DATABASE_NAME>/'; > CREATE TABLE <TABLE_NAME> (x INT, y STRING, z STRING) USING delta; > INSERT INTO <TABLE_NAME> VALUES (1, 'a1', 'b1');
  2. Um die Details Ihrer Tabelle zu sehen, gehen Sie zu https://console.aws.amazon.com/glue/.

  3. Erweitern Sie in der linken Navigationsleiste den Datenkatalog, wählen Sie Tabellen und dann die Tabelle aus, die Sie erstellt haben. Unter Schema sollten Sie sehen, dass die Delta-Tabelle, die Sie mit Spark erstellt haben, alle Spalten in einem Datentyp von array<string> in AWS Glue speichert.

  4. Um Filter auf Spalten- und Zellenebene in Lake Formation zu definieren, entfernen Sie die col Spalte aus Ihrem Schema und fügen Sie dann die Spalten hinzu, die sich in Ihrem Tabellenschema befinden. Fügen Sie in diesem Beispiel die Spalten xy, und hinzu. z