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.
-
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
-
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 -
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;