Verwenden Sie einen Iceberg-Cluster mit Trino - 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.

Verwenden Sie einen Iceberg-Cluster mit Trino

Ab Amazon-EMR-Version 6.6.0 können Sie Iceberg mit Ihrem Trino-Cluster verwenden.

In diesem Tutorial verwenden Sie den, AWS CLI um mit Iceberg auf einem Amazon EMR Trino-Cluster zu arbeiten. Um die Konsole zur Erstellung eines Clusters mit Iceberg zu verwenden, folgen Sie den Schritten unter Ein Data Lake von Apache Iceberg mit Amazon Athena, Amazon EMR und AWS Glue erstellen.

Erstellen Sie einen Iceberg-Cluster

Um Iceberg auf Amazon EMR mit dem zu verwenden AWS CLI, erstellen Sie zunächst einen Cluster mit den folgenden Schritten. Informationen zur Spezifizierung der Iceberg-Klassifizierung mithilfe von finden Sie unter oder AWS CLI. Geben Sie AWS CLI beim Erstellen eines Clusters eine Konfiguration an, indem Sie Beim Erstellen eines Clusters eine Konfiguration mit dem Java SDK angeben

  1. Erstellen Sie eine configurations.json Datei mit dem folgenden Inhalt. Wenn Sie beispielsweise den Hive-Metastore als Ihren Katalog verwenden möchten, sollte Ihre Datei den folgenden Inhalt haben.

    [ { "Classification": "trino-connector-iceberg", "Properties": { "connector.name": "iceberg", "hive.metastore.uri": "thrift://localhost:9083" } } ]

    Wenn Sie den AWS Glue-Datenkatalog als Ihren Shop verwenden möchten, sollte Ihre Datei den folgenden Inhalt haben.

    [ { "Classification": "trino-connector-iceberg", "Properties": { "connector.name": "iceberg", "iceberg.catalog.type": "glue" } } ]
  2. Erstellen Sie einen Cluster mit der folgenden Konfiguration und ersetzen Sie den Beispielpfad und den Schlüsselnamen des Amazon S3 S3-Buckets durch Ihren eigenen.

    aws emr create-cluster --release-label emr-6.7.0 \ --applications Name=Trino \ --region us-east-1 \ --name My_Trino_Iceberg_Cluster \ --log-uri s3://amzn-s3-demo-bucket \ --configurations file://configurations.json \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=c3.4xlarge InstanceGroupType=CORE,InstanceCount=3,InstanceType=c3.4xlarge \ --use-default-roles \ --ec2-attributes KeyName=<key-name>

Initialisieren Sie eine Trino-Sitzung für Iceberg

Um eine Trino-Sitzung zu initialisieren, führen Sie den folgenden Befehl aus.

trino-cli --catalog iceberg

Schreiben Sie an einen Iceberg-Tabelle

Erstellen Sie Ihre Tabelle und schreiben Sie in Ihre Tabelle mit den folgenden SQL-Befehlen.

trino> SHOW SCHEMAS; trino> CREATE TABLE default.iceberg_table ( id int, data varchar, category varchar) WITH ( format = 'PARQUET', partitioning = ARRAY['category', 'bucket(id, 16)'], location = 's3://amzn-s3-demo-bucket/<prefix>') trino> INSERT INTO default.iceberg_table VALUES (1,'a','c1'), (2,'b','c2'), (3,'c','c3');

Lesen von Iceberg aus einer Tabelle

Um von Ihrer Iceberg-Tabelle zu lesen, führen Sie den folgenden Befehl aus.

trino> SELECT * from default.iceberg_table;

Überlegungen zur Verwendung von Iceberg mit Trino

  • Amazon EMR 6.5 bietet keine native Trino-Iceberg-Catalog-Unterstützung für Iceberg. Trino benötigt Iceberg v0.11, daher empfehlen wir, einen Amazon-EMR-Cluster für Trino getrennt vom Spark-Cluster zu starten und Iceberg v0.11 auf diesem Cluster zu integrieren.

  • Wenn Sie AWS Glue als Katalog für Iceberg verwenden, stellen Sie sicher, dass die Datenbank, in der Sie eine Tabelle erstellen, in AWS Glue vorhanden ist. Wenn Sie Dienste wie verwenden AWS Lake Formation und den Katalog nicht laden können, stellen Sie sicher, dass Sie über den richtigen Zugriff auf den Dienst verfügen, um den Befehl auszuführen.

  • Die Iceberg Glue-Integration funktioniert nicht mit dem Redshift Managed Storage-Katalog.