Entenda o mecanismo de formato tabular aberto do Databend em um artigo

Este artigo apresenta o suporte do mecanismo de formato tabular aberto Databend, incluindo vantagens e desvantagens, métodos de uso e comparação com a solução Catalog. Além disso, está incluído um workshop simples para apresentar como usar o Databend Cloud para analisar a tabela Delta localizada no armazenamento de objetos.

A Databend lançou recentemente dois mecanismos de tabela, Apache Iceberg e Delta Table, para fornecer suporte aos dois formatos de tabela aberta mais populares para atender às necessidades de análise avançada de soluções modernas de data lake baseadas em diferentes pilhas de tecnologia.

Usando uma solução completa baseada em Databend/Databend Cloud, você pode obter insights sobre dados tabulares abertos e simplificar a arquitetura de implantação e o processo de análise sem ativar serviços Spark/Databricks adicionais. Além disso, usando a solução de acesso a dados do Databend/Databend Cloud construída no Apache OpenDAL™, você pode acessar facilmente dezenas de serviços de armazenamento, incluindo armazenamento de objetos, HDFS e até mesmo IPFS, e pode ser facilmente integrado às pilhas de tecnologia existentes.

Vantagem

  • Ao usar o mecanismo de formato de tabela aberto, você só precisa especificar o tipo ( Deltaou Iceberg) do mecanismo de tabela e o local onde o arquivo de dados está armazenado, e você pode acessar diretamente a tabela correspondente e usar o Databend para consultar.

  • Usando o mecanismo de formato tabular aberto do Databend, você pode lidar facilmente com cenários onde você mistura diferentes fontes de dados e dados em diferentes formatos tabulares:

    • No mesmo objeto de banco de dados, consulte e analise tabelas de dados resumidas em diferentes formatos.
    • Com a rica integração de back-end de armazenamento do Databend, você pode lidar com as necessidades de acesso a dados em diferentes back-ends de armazenamento.

insuficiente

  • Atualmente, os motores Apache Iceberg e Delta Lake suportam apenas operações somente leitura, ou seja, eles só podem consultar dados, mas não podem gravar dados na tabela.
  • O esquema da tabela é determinado quando a tabela é criada. Se o esquema da tabela original for modificado, para garantir a consistência e sincronização dos dados, a tabela precisa ser recriada no Databend.

Instruções

-- 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>'

Dica: Use no Databend CONNECTIONpara gerenciar os detalhes necessários para interagir com serviços de armazenamento externos, como credenciais de acesso, URLs de endpoint e tipos de armazenamento. Ao especificar CONNECTION_NAME, você pode reutilizá-lo na criação de recursos CONNECTION, simplificando o gerenciamento e o uso de configurações de armazenamento.

Comparação com solução de catálogo

O Databend já forneceu suporte para Iceberg e Hive por meio do Catalog. Em comparação com os mecanismos de tabela, o Catalog é mais adequado para a ecologia relacionada ao acoplamento completo e à montagem de vários bancos de dados e tabelas ao mesmo tempo.

O novo mecanismo de formato de tabela aberto é mais flexível em termos de experiência, suportando a agregação e mistura de dados de diferentes fontes de dados e diferentes formatos de tabela no mesmo banco de dados e conduzindo análises e insights eficazes.

Workshop: Use Databend Cloud para analisar dados em Delta Table

Este exemplo mostrará como usar o Databend Cloud para carregar e analisar uma tabela Delta localizada no armazenamento de objetos.

Usaremos o conjunto clássico de dados de características do corpo do pinguim (pinguins), o converteremos em uma Tabela Delta e o colocaremos em um armazenamento de objetos compatível com S3. Este conjunto de dados contém um total de 8 variáveis, incluindo 7 variáveis ​​de características e 1 variável categórica, com um total de 344 amostras.

  • As variáveis ​​categóricas são espécies (espécies) de pinguins, que pertencem a três subgêneros do gênero Pinguim de cauda dura , a saber, Adélie, Chinstrap e Gentoo.
  • As seis características dos três pinguins incluídos são a ilha (ilha), comprimento do bico (bill_length_mm), profundidade do bico (bill_profundidade_mm), comprimento da nadadeira (flipper_length_mm), peso corporal (body_mass_g) e sexo (sexo).

Se você ainda não possui uma conta Databend Cloud, visite https://app.databend.cn/register para se registrar e obter cota gratuita. Ou você pode consultar https://docs.databend.com/guides/deploy/ para implantar o Databend localmente.

Este artigo também aborda o uso de armazenamento de objetos, e você também pode tentar criar um Bucket usando Cloudflare R2 com cota gratuita.

Gravar dados no armazenamento de objetos

Precisamos instalar o pacote Python correspondente, seabornque é responsável por fornecer dados brutos, deltalakeconverter os dados em uma Tabela Delta e gravá-los no S3:

pip install deltalake seaborn

Em seguida, edite o código abaixo, configure as credenciais de acesso correspondentes e salve-o 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)

Execute o script Python acima para gravar dados no armazenamento de objetos:

python writedata.py

Acessar dados usando o mecanismo de tabela Delta

Crie credenciais de acesso correspondentes no 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>';

Crie uma tabela de dados com tecnologia do mecanismo de tabela Delta:

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

Use SQL para consultar e analisar dados em tabelas

Verifique a acessibilidade dos dados

Primeiro, vamos gerar as espécies e ilhas dos 5 pinguins para verificar se os dados da Tabela Delta podem ser acessados ​​corretamente.

SELECT species, island FROM penguins LIMIT 5;

Filtragem de dados

Em seguida, você pode realizar algumas operações básicas de filtragem de dados, como descobrir a qual subgênero pinguins machos com comprimento de nadadeira superior a 210 mm podem pertencer.

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

análise de dados

Da mesma forma, poderíamos tentar calcular a proporção entre o comprimento e a profundidade do bico de cada pinguim e produzir os cinco maiores.

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

Caso de fonte de dados mista: registro de observação de pinguins

Agora entraremos em uma parte interessante: suponha que encontramos um registro de observação de uma estação de pesquisa científica, vamos tentar inserir esses dados no mesmo banco de dados e tentar realizar uma análise simples dos dados: uma ave de um gênero específico Qual é o probabilidade de um pinguim ser marcado por um cientista.

Criar tabela de registro de observação

Use o mecanismo FUSE padrão para criar penguin_observationsuma tabela, incluindo ID, data, nome, espécie e gênero de pinguim, comentários e outras informações.

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

Insira o registro de observação

Vamos tentar inserir todos os 10 logs manualmente. Sabe-se que os pinguins que aparecem nos registros de log são diferentes uns dos outros.

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 a probabilidade de marcação

Agora vamos calcular a probabilidade de um certo pinguim Adelie macho ser observado pelo Dr. Kowalski entre todos os pinguins. Primeiro precisamos contar o número de pinguins Adélia machos observados pelo Dr. Kowalski, depois contar o número de todos os pinguins Adélia machos registrados e, finalmente, dividir para obter o 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

Ao combinar diferentes mecanismos de tabela para consulta, o Databend/Databend Cloud pode oferecer suporte à mistura de tabelas em diferentes formatos no mesmo banco de dados para análise e consulta. Este artigo fornece apenas um workshop básico para que todos possam experimentar as funções e o uso. Você pode expandir com base neste caso e explorar mais cenários de combinação de Iceberg e Delta Table para análise de dados, bem como mais aplicações potenciais no mundo real.

Leitura recomendada

Linus resolveu resolver o problema por conta própria para evitar que os desenvolvedores do kernel substituíssem tabulações por espaços. Seu pai é um dos poucos líderes que sabe escrever código, seu segundo filho é o diretor do departamento de tecnologia de código aberto e seu filho mais novo é um núcleo. contribuidor de código aberto Huawei: Demorou 1 ano para converter 5.000 aplicativos móveis comumente usados ​​A migração abrangente para Hongmeng Java é a linguagem mais propensa a vulnerabilidades de terceiros Wang Chenglu, o pai de Hongmeng: Hongmeng de código aberto é a única inovação arquitetônica. no campo de software básico na China. Ma Huateng e Zhou Hongyi apertam as mãos para "remover rancores". Ex-desenvolvedor da Microsoft: o desempenho do Windows 11 é "ridiculamente ruim" " Embora o que Laoxiangji seja de código aberto não seja o código, as razões por trás disso são muito emocionantes. Meta Llama 3 é lançado oficialmente. Google anuncia uma reestruturação em grande escala.
{{o.nome}}
{{m.nome}}

Acho que você gosta

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