Utiliser un cluster Iceberg avec Trino - Amazon EMR

Utiliser un cluster Iceberg avec Trino

À partir de la version 6.6.0 d'Amazon EMR, vous pouvez utiliser Iceberg avec votre cluster Trino.

Dans ce tutoriel, vous utilisez l'AWS CLI pour travailler avec Iceberg sur un cluster Amazon EMR Trino. Pour utiliser la console afin de créer un cluster avec Iceberg installé, suivez les étapes de la section Création d'un lac de données Apache Iceberg à l'aide d'Amazon Athena, d'Amazon EMR et d'AWS Glue.

Création d'un cluster Iceberg

Pour utiliser Iceberg sur Amazon EMR avec l'AWS CLI, créez d'abord un cluster en suivant les étapes suivantes. Pour plus d'informations sur la spécification de la classification Iceberg à l'aide de l'option AWS CLI, consultez Fournir une configuration à l'aide de l'option AWS CLI lorsque vous créez un cluster ou Fournir une configuration à l'aide du kit SDK Java lors de la création d'un cluster.

  1. Créez un fichier iceberg.properties et définissez une valeur pour le catalogue de votre choix. Par exemple, si vous souhaitez utiliser le métastore Hive comme catalogue, le contenu de votre fichier doit être le suivant.

    connector.name=iceberg hive.metastore.uri=thrift://localhost:9083

    Si vous voulez utiliser le catalogue de données AWS Glue comme magasin, votre fichier doit avoir le contenu suivant.

    connector.name=iceberg iceberg.catalog.type=glue
  2. Créez une action d'amorçage qui copiée iceberg.properties depuis Amazon S3 vers /etc/trino/conf/catalog/iceberg.properties, comme dans l'exemple suivant. Pour plus d'informations sur les actions d'amorçage, consultez la section Création d'actions d'amorçage pour installer des logiciels supplémentaires.

    set -ex sudo aws s3 cp s3://DOC-EXAMPLE-BUCKET/iceberg.properties /etc/trino/conf/catalog/iceberg.properties
  3. Créez un cluster avec la configuration suivante, en remplaçant l'exemple de chemin du script d'actions amorçage et le nom de clé par les vôtres.

    aws emr create-cluster --release-label emr-6.7.0 \ --applications Name=Trino \ --region us-east-1 \ --name My_Trino_Iceberg_Cluster \ --bootstrap-actions '[{"Path":"s3://DOC-EXAMPLE-BUCKET","Name":"Add iceberg.properties"}]' \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=c3.4xlarge InstanceGroupType=CORE,InstanceCount=3,InstanceType=c3.4xlarge \ --use-default-roles \ --ec2-attributes KeyName=<key-name>

Initialisation d'une session Trino pour Iceberg

Pour initialiser une session Trino, exécutez la commande suivante.

trino-cli --catalog iceberg

Écriture dans une table Iceberg

Créez et écrivez dans votre table à l'aide des commandes SQL suivantes.

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://DOC-EXAMPLE-BUCKET/<prefix>') trino> INSERT INTO default.iceberg_table VALUES (1,'a','c1'), (2,'b','c2'), (3,'c','c3');

Lire à partir d'une table pour Iceberg

Pour lire les données de votre table Iceberg, exécutez la commande suivante.

trino> SELECT * from default.iceberg_table;