Usar un clúster de Iceberg con Trino
A partir de la versión 6.6.0 de Amazon EMR, puede usar Iceberg con su clúster de Trino.
En este tutorial, utilizará AWS CLI para trabajar con Iceberg en un clúster de Trino de Amazon EMR. Para usar la consola para crear un clúster con Iceberg instalado, siga los pasos que se indican en Crear un lago de datos de Apache Iceberg con Amazon Athena, Amazon EMR y AWS Glue
Crear un clúster de Iceberg
Para utilizar Iceberg en Amazon EMR con la AWS CLI, cree primero un clúster con los siguientes pasos. Para obtener información sobre cómo especificar la clasificación de Iceberg mediante AWS CLI, consulte Proporcione una configuración mediante AWS CLI al crear un clúster o Proporcione una configuración mediante el SDK de Java al crear un clúster.
-
Cree un archivo
iceberg.properties
y establezca un valor para el catálogo que elija. Por ejemplo, si quiere usar el metaalmacén de Hive como catálogo, su archivo debe tener el siguiente contenido.connector.name=iceberg hive.metastore.uri=thrift://localhost:9083
Si quiere usar el catálogo de datos de AWS Glue como almacén, el archivo debe tener el siguiente contenido.
connector.name=iceberg iceberg.catalog.type=glue
-
Cree una acción de arranque que copie
iceberg.properties
desde Amazon S3 a/etc/trino/conf/catalog/iceberg.properties
, como en el siguiente ejemplo. Para obtener más información sobre las acciones de arranque, consulte Crear acciones de arranque para instalar software adicional.set -ex sudo aws s3 cp s3://
DOC-EXAMPLE-BUCKET
/iceberg.properties /etc/trino/conf/catalog/iceberg.properties -
Cree un clúster con la siguiente configuración y sustituya el nombre de la clave y la ruta del script de las acciones de arranque del ejemplo por los suyos propios.
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>
Inicializar una sesión de Trino para Iceberg
Para iniciar una sesión de Trino, ejecute el siguiente comando.
trino-cli --catalog iceberg
Escribir en una tabla de Iceberg
Cree la siguiente tabla y escriba en ella con los siguientes comandos de SQL.
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');
Leer desde una tabla para Iceberg
Para leer desde su tabla de Iceberg, ejecute el siguiente comando.
trino> SELECT * from default.iceberg_table;