Usar un clúster de Iceberg con Trino - Amazon EMR

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.

  1. 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
  2. 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
  3. 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;