Comprenda el motor de formato tabular abierto de Databend en un artículo

Este artículo presenta el soporte del motor de formato tabular abierto de Databend, incluidas las ventajas y desventajas, los métodos de uso y la comparación con la solución Catalog. Además, se incluye un taller sencillo para presentar cómo utilizar Databend Cloud para analizar la tabla Delta ubicada en el almacenamiento de objetos.

Databend lanzó recientemente dos motores de tablas, Apache Iceberg y Delta Table, para brindar soporte a los dos formatos de tablas abiertas más populares para satisfacer las necesidades de análisis avanzado de las soluciones modernas de lagos de datos basadas en diferentes pilas de tecnología.

Al utilizar una solución integral basada en Databend/Databend Cloud, puede obtener información sobre datos tabulares abiertos y simplificar la arquitectura de implementación y el proceso de análisis sin activar servicios adicionales de Spark/Databricks. Además, al utilizar la solución de acceso a datos de Databend/Databend Cloud construida sobre Apache OpenDAL™, puede acceder fácilmente a docenas de servicios de almacenamiento, incluido el almacenamiento de objetos, HDFS e incluso IPFS, y puede integrarse fácilmente con pilas de tecnología existentes.

Ventaja

  • Cuando utilice el motor de formato de tabla abierta, solo necesita especificar el tipo ( Deltao Iceberg) del motor de tabla y la ubicación donde se almacena el archivo de datos, y podrá acceder directamente a la tabla correspondiente y utilizar Databend para realizar consultas.

  • Al utilizar el motor de formato tabular abierto de Databend, puede manejar fácilmente escenarios en los que mezcla diferentes fuentes de datos y datos en diferentes formatos tabulares:

    • Bajo el mismo objeto de base de datos, consulte y analice tablas de datos resumidas en diferentes formatos.
    • Con la rica integración de backend de almacenamiento de Databend, puede manejar las necesidades de acceso a datos en diferentes backends de almacenamiento.

insuficiente

  • Actualmente, los motores Apache Iceberg y Delta Lake solo admiten operaciones de solo lectura, es decir, solo pueden consultar datos pero no escribir datos en la tabla.
  • El esquema de la tabla se determina cuando se crea la tabla. Si se modifica el esquema de la tabla original, para garantizar la coherencia y sincronización de los datos, es necesario volver a crear la tabla en Databend.

Instrucciones

-- Set up connection
CREATE [ OR REPLACE ] CONNECTION [ IF NOT EXISTS ] <connection_name> 
    STORAGE_TYPE = '<type>' 
    [ <storage_params> ]

-- Create table with Open Table Format engine
CREATE TABLE <table_name> 
    ENGINE = [Delta | Iceberg] 
    LOCATION = '<location_to_table>' 
    CONNECTION_NAME = '<connection_name>'

Consejo: Úselo en Databend CONNECTIONpara administrar los detalles necesarios para interactuar con servicios de almacenamiento externos, como credenciales de acceso, URL de puntos finales y tipos de almacenamiento. Al especificar CONNECTION_NAME, puede reutilizarlo al crear recursos CONNECTION, simplificando la administración y el uso de las configuraciones de almacenamiento.

Comparación con la solución del catálogo

Databend anteriormente brindó soporte para Iceberg y Hive a través de Catalog. En comparación con los motores de tablas, Catalog es más adecuado para la ecología completa relacionada con el acoplamiento y el montaje de múltiples bases de datos y tablas al mismo tiempo.

El nuevo motor de formato de tabla abierta es más flexible en términos de experiencia, admite la agregación y combinación de datos de diferentes fuentes de datos y diferentes formatos de tabla en la misma base de datos y realiza análisis e información efectivos.

Taller: Utilice Databend Cloud para analizar datos en Delta Table

Este ejemplo mostrará cómo usar Databend Cloud para cargar y analizar una tabla Delta ubicada en el almacenamiento de objetos.

Usaremos el conjunto de datos clásico de características del cuerpo del pingüino (pingüinos), lo convertiremos en una tabla Delta y lo colocaremos en un almacenamiento de objetos compatible con S3. Este conjunto de datos contiene un total de 8 variables, incluidas 7 variables características y 1 variable categórica, con un total de 344 muestras.

  • Las variables categóricas son especies de pingüinos (especies), que pertenecen a tres subgéneros del género Pingüino de cola dura , a saber, Adelia, Barbijo y Gentoo.
  • Las seis características de los tres pingüinos incluidos son la isla (isla), la longitud del pico (bill_length_mm), la profundidad del pico (bill_profundidad_mm), la longitud de las aletas (flipper_length_mm), el peso corporal (body_mass_g) y el género (sexo).

Si aún no tiene una cuenta de Databend Cloud, visite https://app.databend.cn/register para registrarse y obtener una cuota gratuita. O puede consultar https://docs.databend.com/guides/deploy/ para implementar Databend localmente.

Este artículo también cubre el uso del almacenamiento de objetos y también puede intentar crear un depósito usando Cloudflare R2 con cuota gratuita.

Escribir datos en el almacenamiento de objetos.

Necesitamos instalar el paquete Python correspondiente, seabornque se encarga de proporcionar datos sin procesar, deltalakeconvertir los datos en una Tabla Delta y escribirlos en S3:

pip install deltalake seaborn

Luego, edite el código a continuación, configure las credenciales de acceso correspondientes y guárdelo como writedata.py:

import seaborn as sns
from deltalake.writer import write_deltalake

ACCESS_KEY_ID = '<your-key-id>'
SECRET_ACCESS_KEY = '<your-access-key>'
ENDPOINT_URL = '<your-endpoint-url>'

storage_options = {
    "AWS_ACCESS_KEY_ID": ACCESS_KEY_ID,
    "AWS_SECRET_ACCESS_KEY": SECRET_ACCESS_KEY,
    "AWS_ENDPOINT_URL": ENDPOINT_URL,
    "AWS_S3_ALLOW_UNSAFE_RENAME": 'true',
}

penguins = sns.load_dataset('penguins')

write_deltalake("s3://penguins/", penguins, storage_options=storage_options)

Ejecute el script de Python anterior para escribir datos en el almacenamiento de objetos:

python writedata.py

Acceda a los datos utilizando el motor de tablas Delta

Cree las credenciales de acceso correspondientes en Databend:

--Set up connection
CREATE CONNECTION my_r2_conn 
    STORAGE_TYPE = 's3' 
    SECRET_ACCESS_KEY = '<your-access-key>' 
    ACCESS_KEY_ID = '<your-key-id>'
    ENDPOINT_URL = '<your-endpoint-url>';

Cree una tabla de datos impulsada por el motor de tablas Delta:

-- Create table with Open Table Format engine
CREATE TABLE penguins
    ENGINE = Delta
    LOCATION = 's3://penguins/' 
    CONNECTION_NAME = 'my_r2_conn';

Utilice SQL para consultar y analizar datos en tablas

Verificar la accesibilidad de los datos

Primero, generemos las especies e islas de los 5 pingüinos para verificar si se puede acceder correctamente a los datos en la Tabla Delta.

SELECT species, island FROM penguins LIMIT 5;

Filtrado de datos

A continuación, puede realizar algunas operaciones básicas de filtrado de datos, como averiguar a qué subgénero pueden pertenecer los pingüinos machos con aletas de más de 210 mm de longitud.

SELECT DISTINCT species
                 FROM penguins 
                WHERE sex = 'Male' 
                  AND flipper_length_mm > 210;

análisis de los datos

De manera similar, podríamos intentar calcular la relación entre la longitud y la profundidad del pico de cada pingüino y generar los cinco más grandes.

SELECT bill_length_mm / bill_depth_mm AS length_to_depth
                 FROM penguins
                ORDER BY length_to_depth DESC
                LIMIT 5;

Caso de fuente de datos mixta: registro de observación de pingüinos

Ahora entraremos en una parte interesante: supongamos que encontramos un registro de observación de una estación de investigación científica, intentemos ingresar estos datos en la misma base de datos e intentemos realizar un análisis de datos simple: un ave de un género específico ¿Cuál es el Probabilidad de que un científico marque un pingüino.

Crear tabla de registro de observaciones

Utilice el motor FUSE predeterminado para crear penguin_observationsuna tabla que incluya ID, fecha, nombre, especie y género de pingüinos, comentarios y otra información.

CREATE TABLE penguin_observations (
    observation_id INT,
    observation_date DATE,
    observer_name VARCHAR,
    penguin_species VARCHAR,
    penguin_sex VARCHAR,
    notes TEXT,
);

Ingresar al registro de observación

Intentemos ingresar los 10 registros manualmente. Se sabe que los pingüinos que aparecen en los registros son diferentes entre sí.

INSERT INTO penguin_observations (observation_id, observation_date, observer_name, penguin_species, penguin_sex, notes)
VALUES
(1, '2023-01-01', 'Dr. Kowalski', 'Adelie', 'Male', 'Noticed aggressive behavior towards peers.'),
(2, '2023-01-02', 'Dr. Smith', 'Chinstrap', 'Female', 'Sighted building a nest.'),
(3, '2023-01-03', 'Dr. Kowalski', 'Gentoo', 'Female', 'Observed feeding offspring.'),
(4, '2023-01-04', 'Dr. Smith', 'Adelie', 'Male', 'Found resting by the shoreline.'),
(5, '2023-01-05', 'Dr. Kowalski', 'Adelie', 'Female', 'Engaged in mating rituals.'),
(6, '2023-01-06', 'Dr. Kowalski', 'Gentoo', 'Male', 'Spotted swimming in the open water.'),
(7, '2023-01-07', 'Dr. Smith', 'Chinstrap', 'Male', 'Appeared to be molting.'),
(8, '2023-01-08', 'Dr. Smith', 'Gentoo', 'Female', 'Seen with a potential mate.'),
(9, '2023-01-09', 'Dr. Kowalski', 'Adelie', 'Female', 'Observed preening feathers.'),
(10, '2023-01-10', 'Dr. Kowalski', 'Adelie', 'Male', 'Identified with a tagged flipper.');

Calcular la probabilidad de marcar

Ahora calculemos la probabilidad de que el Dr. Kowalski observe a cierto pingüino Adelia macho entre todos los pingüinos. Primero debemos contar el número de pingüinos Adelia macho observados por el Dr. Kowalski, luego contar el número de todos los pingüinos Adelia macho registrados y finalmente dividir para obtener el resultado.

SELECT
    (SELECT COUNT(*)
     FROM penguin_observations
     WHERE observer_name = 'Dr. Kowalski'
     AND species = 'Adelie'
     AND sex = 'Male')::FLOAT /
    (SELECT COUNT(*)
     FROM penguins
     WHERE species = 'Adelie'
     AND sex = 'Male')::FLOAT AS observation_probability;

Resumir

Al combinar diferentes motores de tablas para consultas, Databend/Databend Cloud puede admitir la combinación de tablas de diferentes formatos en la misma base de datos para análisis y consultas. Este artículo solo proporciona un taller básico para que todos experimenten las funciones y el uso. Puede ampliarlo según este caso y explorar más escenarios de combinación de Iceberg y Delta Table para el análisis de datos, así como más aplicaciones potenciales del mundo real.

Lectura recomendada

Linus tomó el asunto en sus propias manos para evitar que los desarrolladores del kernel reemplacen las pestañas con espacios. Su padre es uno de los pocos líderes que puede escribir código, su segundo hijo es el director del departamento de tecnología de código abierto y su hijo menor es un núcleo. Colaborador de código abierto Huawei: tomó 1 año convertir 5000 aplicaciones móviles de uso común Migración completa a Hongmeng Java es el lenguaje más propenso a vulnerabilidades de terceros Wang Chenglu, el padre de Hongmeng: el código abierto Hongmeng es la única innovación arquitectónica. En el campo del software básico en China, Ma Huateng y Zhou Hongyi se dan la mano para "eliminar rencores". Ex desarrollador de Microsoft: el rendimiento de Windows 11 es "ridículamente malo " " Aunque lo que Laoxiangji es de código abierto no es el código, las razones detrás de él. Son muy conmovedores. Meta Llama 3 se lanza oficialmente. Google anuncia una reestructuración a gran escala.
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/5489811/blog/11046326
Recomendado
Clasificación