in

Nuevas tablas de Amazon S3: almacenamiento optimizado para cargas de trabajo de análisis | Servicios web de Amazon

Las tablas de Amazon S3 le brindan almacenamiento optimizado para datos tabulares, como transacciones de compras diarias, datos de sensores de transmisión e impresiones de anuncios en formato Apache Iceberg, para consultas sencillas utilizando motores de consulta populares como Amazon Athena, Amazon EMR y chispa apache. En comparación con el almacenamiento de tablas autoadministrado, puede esperar un rendimiento de consultas hasta 3 veces más rápido y hasta 10 veces más transacciones por segundo, junto con la eficiencia operativa que es parcial cuando utiliza un servicio totalmente administrado.

Iceberg se ha convertido en la forma más popular de administrar archivos Parquet, y miles de clientes de AWS utilizan Iceberg para consultar a menudo miles de millones de archivos que contienen petabytes o incluso exabytes de datos.

Depósitos de tablas, tablas y espacios de nombres
Los depósitos de tablas son el tercer tipo de depósitos de S3 y ocupan su lugar junto con los depósitos de directorio y de propósito general existentes. Puede pensar en un depósito de tablas como un almacén de análisis que puede almacenar tablas Iceberg con varios esquemas. Además, S3 Tables ofrece las mismas características de durabilidad, disponibilidad, escalabilidad y rendimiento que el propio S3 y optimiza automáticamente su almacenamiento para maximizar el rendimiento de las consultas y minimizar los costos.

Cada depósito de tablas reside en una región de AWS específica y tiene un nombre que debe ser único dentro de la cuenta de AWS con respecto a la región. Los depósitos están referenciados por ARN y también tienen una política de recursos. Finalmente, cada depósito utiliza espacios de nombres para agrupar lógicamente las tablas en el depósito.

Las tablas son conjuntos de datos estructurados almacenados en un depósito de tablas. Al igual que los depósitos de tablas, tienen ARN y políticas de recursos, y existen dentro de uno de los espacios de nombres del depósito. Las tablas se administran completamente, con mantenimiento continuo automático y configurable que incluye compactación, administración de instantáneas antiguas y eliminación de archivos sin referencia. Cada tabla tiene un punto final API de S3 para operaciones de almacenamiento.

Se puede hacer referencia a los espacios de nombres desde las políticas de acceso para simplificar la gestión del acceso.

Depósitos y tablas desde la línea de comandos
Bien, vamos a sumergirnos, crear un cubo y poner una o dos mesas dentro. Usaré la interfaz de línea de comandos de AWS (AWS CLI), pero la consola de administración de AWS y la compatibilidad con API también están disponibles. Para ser conciso, canalizaré la salida de los comandos más detallados a través jq y mostrarle sólo los valores más relevantes.

El primer paso es crear un depósito de tablas:

$ aws s3tables create-table-bucket --name jbarr-table-bucket-2 | jq .arn
"arn:aws:s3tables:us-east-2:123456789012:bucket/jbarr-table-bucket-2"

Por conveniencia, creo una variable de entorno con el ARN del depósito de la tabla:

$ export ARN="arn:aws:s3tables:us-east-2:123456789012:bucket/jbarr-table-bucket-2"

Y luego enumero los cubos de mi mesa:

$ aws s3tables list-table-buckets | jq .tableBuckets[].arn
"arn:aws:s3tables:us-east-2:123456789012:bucket/jbarr-table-bucket-1"
"arn:aws:s3tables:us-east-2:123456789012:bucket/jbarr-table-bucket-2"

Puedo acceder y completar la tabla de muchas maneras diferentes. Para fines de prueba, instalé Apache Spark y luego invoqué el shell Spark con argumentos de línea de comandos para usar el Catálogo de tablas de Amazon S3 para Apache Iceberg empaquetar y configurar mytablebucket al ARN de mi mesa.

Creo un espacio de nombres (mydata) que usaré para agrupar mis tablas:

scala> spark.sql("""CREATE NAMESPACE IF NOT EXISTS mytablebucket.mydata""")

Luego creo una tabla Iceberg simple en el espacio de nombres:

spark.sql("""CREATE TABLE IF NOT EXISTS mytablebucket.mydata.table1
 (id INT,
  name STRING,
  value INT)
  USING iceberg
  """)

yo uso algunoss3tables Comandos para comprobar mi trabajo:

$ aws s3tables list-namespaces --table-bucket-arn $ARN | jq .namespaces[].namespace[] 
"mydata"
$
$ aws s3tables list-tables --table-bucket-arn $ARN | jq .tables[].name
"table1"

Luego vuelvo al Spark Shell y agrego algunas filas de datos a mi tabla:

spark.sql("""INSERT INTO mytablebucket.mydata.table1
  VALUES
  (1, 'Jeff', 100),
  (2, 'Carmen', 200),
  (3, 'Stephen', 300),
  (4, 'Andy', 400),
  (5, 'Tina', 500),
  (6, 'Bianca', 600),
  (7, 'Grace', 700)
  """)

Cubos y mesas desde la consola.
También puedo crear y trabajar en depósitos de tablas usando la consola S3. hago clic cubos de mesa para empezar:

Antes de crear mi primer depósito hago clic Habilitar la integración para poder acceder a mis depósitos de tablas desde Amazon Athena, Amazon Redshift, Amazon EMR y otros motores de consulta de AWS (puedo hacerlo más adelante si no lo hago ahora):

Leo la letra pequeña y hago clic Habilitar la integración para crear el rol de IAM especificado y una entrada en el catálogo de datos de AWS Glue:

Después de unos segundos la integración está habilitada y hago clic Crear depósito de tabla para seguir adelante:

Introduzco un nombre (jbarr-mesa-bucket-3) y haga clic Crear depósito de tabla:

Desde aquí puedo crear y usar tablas como les mostré anteriormente en la sección CLI.

Mantenimiento de la mesa
Los cubos de mesa se encargan de algunas tareas de mantenimiento importantes que serían su responsabilidad si estuviera creando y administrando sus propias mesas Iceberg. Para liberarle de estas tareas y poder pasar más tiempo en su mesa, las siguientes operaciones de mantenimiento se realizan automáticamente:

Compactación – Este proceso combina varios objetos de tabla pequeños en un objeto más grande para mejorar el rendimiento de la consulta, en pos de un tamaño de archivo de destino que se puede configurar para que esté entre 64 MiB y 512 MiB. El nuevo objeto se reescribe como una nueva instantánea.

Gestión de instantáneas – Este proceso caduca y, en última instancia, elimina las instantáneas de la tabla, con opciones de configuración para la cantidad mínima de instantáneas a retener y la antigüedad máxima de una instantánea a retener. Las instantáneas caducadas se marcan como no actuales y luego se eliminan después de un número específico de días.

Eliminación de archivos sin referencia – Este proceso elimina y elimina objetos a los que no hace referencia ninguna instantánea de tabla.

Cosas que debes saber
Aquí hay un par de cosas importantes que debe saber sobre los cubos de mesa y las mesas:

Integración de AWS – La integración de S3 Tables con AWS Glue Data Catalog está en versión preliminar, lo que le permite consultar y visualizar datos utilizando servicios de AWS Analytics como Amazon Athena, Amazon Redshift, Amazon EMR y Amazon QuickSight.

Soporte de API S3 – Los depósitos de tablas admiten funciones relevantes de la API de S3, incluidas GetObject, HeadObject, PutObjecty las operaciones de carga de varias partes.

Seguridad – Todos los objetos almacenados en depósitos de tablas se cifran automáticamente. Los depósitos de tablas están configurados para aplicar el bloqueo de acceso público.

Precios – Usted paga por el almacenamiento, las solicitudes, una tarifa de seguimiento de objetos y tarifas de compactación. Consulte la página de precios de S3 para obtener más información.

Regiones – Puede utilizar esta nueva característica en las regiones de AWS EE. UU. Este (Ohio, Norte de Virginia) y EE. UU. Oeste (Oregón).

jeff;



Fuente

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

GIPHY App Key not set. Please check settings

Obtenga la revisión de Backup Pro

Meta se apoya silenciosamente en su rival GPT-4 a pesar de las audaces afirmaciones de Llama de Zuckerberg

Meta se apoya silenciosamente en su rival GPT-4 a pesar de las audaces afirmaciones de Llama de Zuckerberg