0 / 0
Volver a la versión inglesa de la documentación
Grupos, vías de acceso de archivos y particiones en Cloud Object Storage
Última actualización: 09 abr 2021
Particiones y grupos en Cloud Object Storage

La información siguiente ayuda a comprender el concepto de grupos, vías de acceso de archivos y particiones:

Introducción

Componentes clave de Cloud Object Storage

Prácticas preferidas para el diseño de particiones

Introducción

Dónde y cómo se almacenan los datos en IBM Cloud Object Storage (COS) puede influir directamente en el rendimiento de las consultas y en la utilización de los recursos. Los grupos y las particiones desempeñan papeles importantes en la organización de datos.

Veamos los componentes de COS para entender cómo almacenar mejor los datos para un rendimiento óptimo de las consultas. Utilizaremos los datos de ejemplo de Clickstream para demostrar algunas estrategias de partición. El siguiente fragmento de código es un ejemplo del esquema de datos de origen en formato JSON:

	{ 
		customer_id": "12649", 
		"time_stamp": "2018-01-02 12:33:43", 
		"click_event_type": "add_to_cart", 
		“product_name": "Office Supplies", 
		"product_category": "Home Products", 
		"product_price": "12.99", 
		"total_price_of_basket": "41.54", 
		"total_number_of_items_in_basket": "6", 
		"total_number_of_distinct_items_in_basket": "2"
	}

Componentes clave de Cloud Object Storage

Los siguientes componentes son componentes clave de Cloud Object Storage.

Grupo

Un grupo es una abstracción lógica que se utiliza para proporcionar un "contenedor" para los datos. Los grupos se crean solo en COS. Por ejemplo, puede crear un grupo llamado "blackfriday" para que sea el contenedor de todos los datos en streaming de las ventas del almacén Black Friday y otro grupo llamado "postxmas" para las ventas de tiendas el 26 de diciembre. Cree un tercer grupo que se denomina "clickstream" para contener datos en streaming sobre todas las actividades de ventas en línea.

Seleccione el grupo que desea utilizar en el panel Propiedades del operador de COS en el lienzo del flujo de secuencias. Cuando configure el operador de Cloud Object Storage operator para el flujo de secuencias en el lienzo, pulse Icono Seleccionar activo de datos situado junto al campo Vía de acceso de archivo. Se abre la ventana Seleccionar activo de datos.

Importante

En la ventana Seleccionar activo de datos, puede ver todos los grupos en la instancia de COS, pero solo puede acceder a los grupos que tienen la misma ubicación que el URL del conector de COS que ha seleccionado.

Para ver a qué grupos puede acceder, realice los siguientes pasos. Sugerencia: Utilice dos ventanas del navegador para trabajar en paralelo.

  1. En la primera ventana del navegador, obtenga el punto final de COS realizando los siguientes pasos:

    a. Vaya a la página Proyectos del proyecto y, a continuación, pulse el separador Activos.

    b. En la sección Actividades de datos, pulse Cloud Object Storage.

    c. En la ventana Editar conexión, vaya al campo URL de inicio de sesión y, a continuación, anote la serie inmediatamente después de https://s3. Por ejemplo, si el valor URL de inicio de sesión es https://s3.eu-geo.objectstorage.softlayer.net, la serie a anotar es eu-geo.

  2. En la segunda ventana del navegador, busque los grupos a los que se puede acceder realizando los pasos siguientes:

    a. Vaya al panel de control de IBM Cloud.

    b. Pulse el nombre del servicio Cloud Object Storage. Se abre la ventana Grupos y lista todos los grupos y sus ubicaciones.

    Grupos de particiones

    c. En la columna LOCATION, anote las ubicaciones que coincidan con la serie del URL de COS del paso 1c. Solo se puede acceder a estos grupos. En nuestro ejemplo, solo se puede acceder a los grupos clickstream y crossregion0eu0geo porque su ubicación es eu-geo.

La conexión con cualquier otro grupo, por ejemplo, crossregion0ap0geo, proporciona el siguiente mensaje:


Not_found: this error occurred while accessing the connectors service: The assets request failed: 
CDICO2015E: The crossregion0ap0geo container does not exist or you do not have sufficient permissions.

Vía de acceso de archivo

La vía de acceso de archivo es la vía de acceso completa del archivo donde desea almacenar los datos. La vía de acceso de archivo incluye el nombre de grupo, una vía de acceso de archivo opcional, un nombre de carpeta opcional y el nombre de archivo.

Las siguientes vías de acceso de archivo son ejemplos de vías de acceso de archivo válidas:

  • /my_bucket/my_folder/my_file.csv
  • /my_bucket/my_new_folder/my_new_file.csv

En el campo Vía de acceso de archivo, puede crear carpetas y archivos en grupos existentes. Para este ejemplo, llamemos a nuestro nombre de archivo "%TIME.parquet" y colocaremos datos en un grupo llamado "clickstream". Hablaremos sobre la variable del sistema %TIME en la siguiente sección.

Vía de acceso de archivo para el grupo de Clickstream

Variables del sistema

Puede añadir variables del sistema (%TIME, %OBJECTNUM y %PARTITIONS) a la vía de acceso de archivo para que sea exclusiva y para mejorar el rendimiento de las consultas.

Examinemos cada una de las variables del sistema.

%TIME es la hora en que se crea el objeto COS. El formato de hora predeterminado es aaaaMMdd_HHmmss.

La variable de sistema %TIME se puede añadir en cualquier lugar de la vía de acceso después del nombre de grupo. Incluso puede ser el nombre del archivo. La variable suele utilizarse para crear nombres de archivos dinámicos cuando espera que la aplicación cree varios archivos.

Las siguientes vías de acceso de archivo son ejemplos de vías de acceso de archivo válidas con %TIME.

  • /my_bucket/event_%TIME.parquet
  • /my_bucket/%TIME.parquet
  • /my_bucket/my_new_folder/my_new_file_%TIME.csv
  • /my_bucket/geo/uk/geo_%TIME.parquet
  • /my_bucket/geo/uk/my_new_folder/%TIME_event.parquet

   

%OBJECTNUM es un número de objeto, a partir de 0, cuando se crea un nuevo objeto para grabar. Los objetos con el mismo nombre se sobrescribirán. Normalmente, se añade %OBJECTNUM después del nombre de archivo.

Las siguientes vías de acceso de archivo son ejemplos de vías de acceso válidas con %OBJECTNUM.

  • /my_bucket/event_%OBJECTNUM.parquet
  • /my_bucket/geo/uk/geo_%OBJECTNUM.parquet
  • /my_bucket/%OBJECTNUM_event.csv
  • /my_bucket/%OBJECTNUM_%TIME.csv

Nota: Si se utiliza el particionamiento, %OBJECNUM se gestiona globalmente para todas las particiones en el objeto COS, en lugar de independientemente para cada partición.

 

Partición

Una partición son datos agrupados por un atributo común en el esquema de entrada. Cuando configura el operador Cloud Object Storage en el lienzo del flujo de secuencias, crea y añade particiones a grupos.

Utilice particiones cuando necesite reducir la cantidad de datos que las consultas deben procesar. El streaming proporciona acceso a cantidades masivas de datos. La consulta del conjunto de datos completo podría no ser posible o incluso necesaria. Para mejorar el rendimiento de la consulta, rompa los datos en fragmentos o particiones y, a continuación, consulte la partición que necesite.

Por ejemplo, es posible que desee obtener información sobre los usuarios de la compra en línea que han colocado un elemento en su carro. La primera partición es “click_event_type” por lo que puede consultar el suceso "add_to_cart" de Clickstream. A continuación, añada la partición "customer_id" porque desea analizar el comportamiento de compra en línea de cada cliente.

Dos particiones

Recuerde que hemos definido la vía de acceso del archivo utilizando un grupo existente y un nuevo nombre de archivo basado en el tiempo.

Vía de acceso de archivo para el grupo de Clickstream

Cuando se ejecuta el flujo de secuencias, COS coloca automáticamente las particiones "click_event_type" y "customer_id" inmediatamente antes de la última parte del nombre del objeto, "%TIME.parquet". Como resultado, el objeto en COS es clickstream/click_event_type/customer_id/ %TIME.parquet tal como se muestra en la siguiente captura de pantalla.

Objetos en el grupo de Clickstream

Valores de partición no válidos

Si un valor de una partición no es válido o falta, se sustituye por la serie __HIVE_DEFAULT_PARTITION__ en la lista de nombres de objetos de COS en COS.

Por ejemplo, si el valor de "customer_id" no es válido o falta, "customer_id" puede ser clickstream/click_event_type=add_to_cart/customer_id=__HIVE_DEFAULT_PARTITION__/20171022_124948.parquet.

   

   

%PARTITIONS coloca las particiones que ha definido en cualquier lugar del nombre del objeto en COS.

De forma predeterminada, las particiones se colocan inmediatamente antes de la última parte del nombre del objeto y en el orden en que se crearon. Puede cambiar la ubicación de estas particiones (pero no su orden) en el nombre del objeto COS utilizando la variable del sistema %PARTITIONS.

En nuestro ejemplo, la partición click_event_type es la primera, seguida de la partición customer_id. De forma predeterminada, ambas se colocan antes de %TIME.parquet.

Ejemplo de la posición predeterminada de las particiones en un nombre de objeto

Supongamos que la vía de acceso del archivo es clickstream/store_location/ %TIME.parquet. Ha añadido la carpeta store_location y ha definido las particiones click_event_type y customer_id.

El NOMBRE DE OBJETO en COS sería algo parecido a clickstream/store_location/click_event_type=add_to_cart/customer_id=13579/20171022_124948.parquet.

Veamos cómo cambia la ubicación de la partición utilizando %PARTITIONS. Supongamos que la vía de acceso del archivo ahora es clickstream/%PARTITIONS/store_location/ %TIME.parquet.

El NOMBRE DE OBJETO en COS sería clickstream/click_event_type=add_to_cart/customer_id=13579/store_location/20171022_124948.parquet.

Prácticas preferidas para el diseño de particiones

Ahora que entendemos los componentes básicos de COS, veamos cómo podemos diseñar particiones para mejorar el rendimiento de las consultas y optimizar la utilización de recursos.

Principios generales para el diseño de particiones

  1. Piense en qué tipo de consultas necesita. Por ejemplo, es posible que necesite crear informes mensuales o ventas por línea de producto.

  2. No defina una partición en un atributo para que termine con demasiadas particiones. La reducción del número de particiones puede mejorar en gran medida el rendimiento y el consumo de recursos.

  3. No defina una partición en un atributo para que termine con muchos archivos pequeños.

Las siguientes preguntas pueden ayudarle a implementar estos principios

  1. ¿Qué atributo se consulta más a menudo?

    Añada el atributo que se consulta más a menudo como la primera partición para que vaya inmediatamente después del nombre del grupo. En el ejemplo anterior, queríamos informar sobre los usuarios en línea que añaden elementos a su carro de la compra, por lo que "click_event_type" fue la primera partición.

  2. ¿Cómo se ingieren los datos?

    Si los datos están organizados por atributos, es posible que un atributo sea una buena partición.

  3. ¿Se puede dividir el atributo de la fecha en año, mes y día?

    Si es así, utilice un operador Código para crear nuevos atributos para el año, el mes y el día. Estos nuevos atributos deben estar en el esquema de salida del operador Código que se introduce en COS. A continuación, puede hacer una partición en uno de los nuevos atributos. Los nuevos atributos no existen en los datos en streaming originales, pero sí existen en la partición de COS.

    Por ejemplo, en el operador Código, divida el atributo "time_stamp" en tres nuevos atributos denominados "AAAA", "MM" y "DD". En lugar de particionar “time_stamp”, particione “AAAA”. Este particionamiento genera menos archivos pero más grandes.

  4. ¿Tiene los datos una baja cardinalidad, es decir, unos pocos valores posibles?

    Los datos con una cardinalidad baja son adecuados para el particionamiento. En los datos de ejemplo de Clickstream, "time_stamp", "session_duration" y "product_price" suelen tener una alta cardinalidad, por lo que no son adecuados para el particionamiento. "Product_category" tiene una cardinalidad baja, por lo que es un candidato adecuado.

  5. ¿Cuántas particiones está planificando?

    El particionamiento mediante demasiados atributos da como resultado muchos archivos de tamaño pequeño. Como resultado, el rendimiento de las consultas se hace más lento y consumo de recursos es alto.

    Normalmente, es adecuado un tamaño de partición de aproximadamente 1 GB.