Una tabla de Amazon S3 es un tipo de recurso secundario de un bucket de tablas. Las tablas se almacenan en el formato Apache Iceberg, lo que le permite trabajar con ellas utilizando motores de consulta y otras aplicaciones compatibles con Apache Iceberg. Amazon S3 optimiza continuamente las tablas para ayudar a reducir los costos de almacenamiento y mejorar el rendimiento de las consultas de análisis.
Cuando crea una tabla, Amazon S3 genera automáticamente una ubicación de almacén para dicha tabla. Una ubicación de almacén es una ubicación de S3 única donde puede leer y escribir objetos asociados a la tabla. En el siguiente ejemplo se muestra el formato de una ubicación de almacén:
s3://63a8e430-6e0b-46f5-k833abtwr6s8tmtsycedn8s4yc3xhuse1b--table-s3
Las tablas tienen el siguiente formato de nombre de recurso de Amazon (ARN):
arn:aws:s3tables:
region
:owner-account-id
:bucket/bucket-name
/table/table-id
De forma predeterminada, puede crear hasta 10 000 tablas en un bucket de tablas. Para solicitar un aumento de cuota para los buckets de tablas o las tablas, póngase en contacto con Soporte
Puede crear una tabla mediante la consola de Amazon S3, la API de REST de Amazon S3, los SDK de AWS, AWS Command Line Interface (AWS CLI) o los motores de consulta integrados.
Para obtener más información acerca de los nombres de tabla válidos, consulte Reglas de nomenclatura para tablas y espacios de nombres.
Requisitos previos para la creación de tablas
Para crear una tabla, primero debe hacer lo siguiente:
Creación de un espacio de nombres de en el bucket de tablas.
Asegúrese de que dispone de permisos de AWS Identity and Access Management (IAM) para
s3tables:CreateTable
ys3tables:PutTableData
.
El siguiente procedimiento utiliza la consola de Amazon S3 para crear una tabla con Amazon Athena. Si aún no ha creado un espacio de nombres en el bucket de tablas, puede hacerlo como parte de este proceso.
nota
Antes de realizar los pasos siguientes, asegúrese de haber integrado los buckets de tablas con los servicios de análisis de AWS de esta región. Para obtener más información, consulte Uso de Tablas de Amazon S3 con servicios de análisis de AWS.
Para crear una tabla de
Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
En el panel de navegación izquierdo, elija Buckets de tablas.
-
En la página Buckets de tablas, elija el bucket en el que desea crear una tabla.
-
En la página de detalles del bucket, seleccione Crear tabla con Athena.
-
En el cuadro de diálogo Crear tabla con Athena, realice una de las siguientes acciones:
-
Cree un nuevo espacio de nombres. Seleccione Crear un espacio de nombres y, a continuación, introduzca un nombre en el campo Nombre del espacio de nombres. Los nombres de los espacios de nombres deben tener entre 1 y 255 caracteres y ser únicos dentro del bucket de tablas. Los caracteres válidos son a-z, 0-9 y guion bajo (
_
). No se permite el uso de guiones bajos al principio de los nombres de espacios de nombres. -
Elija Crear espacio de nombres.
-
Especifique un espacio de nombres existente. Elija Especificar un espacio de nombres existente dentro de este bucket de tablas. A continuación, elija Elegir entre los espacios de nombres existentes o Introducir un nombre de espacio de nombres existente. Si tiene más de 1000 espacios de nombres en el bucket, debe introducir el nombre del espacio de nombres si este no aparece en la lista.
-
-
Elija Crear tabla con Athena.
-
Se abre la consola de Amazon Athena y aparece el editor de consultas de Athena. El campo Catálogo debe rellenarse con s3tablescatalog/ seguido del nombre del bucket de tablas; por ejemplo, s3tablescatalog/
amzn-s3-demo-bucket
. El campo Base de datos debe rellenarse con el espacio de nombres que se creó o seleccionó anteriormente.nota
Si no ve estos valores en los campos Catálogo y Base de datos, asegúrese de haber integrado los buckets de tablas con los servicios de análisis de AWS en esta región. Para obtener más información, consulte Uso de Tablas de Amazon S3 con servicios de análisis de AWS.
-
El editor de consultas se rellena con una consulta de ejemplo que puede usar para crear una tabla. Modifique la consulta para especificar el nombre de la tabla y las columnas que desea que esta contenga.
-
Cuando haya terminado de modificar la consulta, elija Ejecutar para crear la tabla.
nota
-
Si recibe el error
“Permisos insuficientes para ejecutar la consulta. La entidad principal no tiene ningún privilegio sobre el recurso especificado”
cuando intenta ejecutar una consulta en Athena, se le deberán conceder los permisos necesarios de Lake Formation para la tabla. Para obtener más información, consulte Concesión de permisos sobre una tabla o base de datos. -
Si recibe el error
“Iceberg no puede acceder al recurso solicitado”
al intentar ejecutar una consulta en Athena, vaya a la consola de AWS Lake Formation y asegúrese de haberse concedido permisos para el espacio de nombres de base de datos y catálogo de buckets de tablas que creó. No especifique una tabla al conceder estos permisos. Para obtener más información, consulte Concesión de permisos sobre una tabla o base de datos.
-
Si la tabla se ha creado correctamente, el nombre de la nueva tabla aparecerá en la lista de tablas en Athena. Cuando vuelva a la consola de Amazon S3, la nueva tabla aparecerá en la lista Tablas de la página de detalles del bucket de tablas tras actualizar la lista.
En este ejemplo se muestra cómo crear una tabla con un esquema mediante la AWS CLI y la especificación de los metadatos de tabla con JSON. Para utilizar este ejemplo, reemplace los
con su propia información.user
input placeholders
aws s3tables create-table --cli-input-json file://
mytabledefinition.json
Para el archivo mytabledefinition.json
, utilice la siguiente definición de tabla de ejemplo. Para utilizar este ejemplo, reemplace los
con su propia información. user input
placeholders
{ "tableBucketARN": "arn:aws:s3tables:
us-east-1
:111122223333
:bucket/amzn-s3-demo-table-bucket
", "namespace": "your_namespace
", "name": "example_table
", "format": "ICEBERG", "metadata": { "iceberg": { "schema": { "fields": [ {"name": "id
", "type": "int
","required": true
}, {"name": "name
", "type": "string
"}, {"name": "value
", "type": "int
"} ] } } } }
Puede crear una tabla en un motor de consulta compatible conectado a los buckets de tablas como, por ejemplo, en una sesión de Apache Spark en Amazon EMR.
En el ejemplo siguiente se muestra cómo crear una tabla con Spark mediante instrucciones CREATE
, y cómo agregar datos a la tabla con instrucciones INSERT
o mediante la lectura de datos de un archivo existente. Para utilizar este ejemplo, reemplace los
con su propia información.user input
placeholders
spark.sql( " CREATE TABLE IF NOT EXISTS s3tablesbucket.
example_namespace
.`example_table
` ( id INT, name STRING, value INT ) USING iceberg " )
Después de crear la tabla, puede cargar datos en ella. Elija entre los siguientes métodos:
Añada datos a la tabla mediante la instrucción
INSERT
.spark.sql( """ INSERT INTO s3tablesbucket.
my_namespace
.my_table
VALUES (1, 'ABC', 100), (2, 'XYZ', 200) """)Cargue un archivo de datos existente.
Lea los datos en Spark:
val data_file_location = "
Path such as S3 URI to data file
" val data_file = spark.read.parquet(data_file_location
)Escriba los datos en una tabla de Iceberg:
data_file.writeTo("s3tablesbucket.
my_namespace
.my_table
").using("Iceberg").tableProperty ("format-version", "2").createOrReplace()