Todos os produtos
Search
Central de documentação

Realtime Compute for Apache Flink:Streaming lakehouse com Paimon e StarRocks

Última atualização: Nov 03, 2026

Saiba como construir um streaming data lakehouse usando Realtime Compute for Apache Flink, Apache Paimon e StarRocks.

Contexto

Com a crescente digitalização dos negócios, a demanda por dados em tempo real aumenta continuamente. O método tradicional de construção de um data warehouse offline envolve o agendamento de jobs offline para mesclar periodicamente novos dados em estruturas em camadas, como ODS, DWD, DWS e ADS. No entanto, essa abordagem apresenta dois problemas significativos: alta latência e alto custo. Jobs offline são geralmente agendados a cada hora ou até diariamente, de modo que os consumidores downstream só conseguem visualizar dados com pelo menos uma hora ou um dia de atraso. Além disso, as atualizações frequentemente exigem a substituição de partições inteiras. Esse processo ineficiente relê todos os dados originais de uma partição para mesclar as novas alterações.

A construção de um streaming data lakehouse com Realtime Compute for Apache Flink e Apache Paimon resolve os problemas de latência e custo dos data warehouses offline tradicionais. As capacidades de processamento em tempo real do Flink permitem que os dados fluam continuamente entre as camadas do warehouse. Enquanto isso, as funcionalidades eficientes de atualização do Paimon entregam alterações de dados aos consumidores downstream com latência de apenas alguns minutos. Como resultado, o streaming data lakehouse oferece vantagens significativas tanto em baixa latência quanto em custo-benefício.

Para obter mais informações sobre o Apache Paimon, consulte sua {{XREF_0}} e o site oficial do Apache Paimon.

Arquitetura e benefícios

Arquitetura

O Realtime Compute for Apache Flink é um mecanismo poderoso de processamento de fluxo que processa com eficiência grandes volumes de dados em tempo real. O Paimon é um formato de armazenamento de lake unificado para processamento em fluxo e em lote, compatível com atualizações de alto throughput e consultas de baixa latência. O Paimon possui integração profunda com o Flink para fornecer uma solução completa de streaming lakehouse. A seguir, veja a arquitetura para construir um streaming lakehouse usando Flink e Paimon.

  1. O Flink grava dados das fontes de dados no Paimon, criando a camada ODS.

  2. O Flink assina o changelog da camada ODS, transforma os dados e os grava de volta no Paimon como a camada DWD.

  3. O Flink assina o changelog da camada DWD, transforma os dados e os grava de volta no Paimon como a camada DWS.

  4. Por fim, o StarRocks em {{XREF_1}} lê a tabela externa do Paimon para atender às consultas da aplicação.

image

Benefícios

Esta solução oferece os seguintes benefícios:

  • Cada camada de dados no Paimon propaga alterações para os sistemas downstream em poucos minutos. Isso reduz a latência de um data warehouse offline tradicional de horas ou até dias para minutos.

  • Cada camada de dados no Paimon ingere diretamente os dados de alteração sem substituir partições. Isso reduz significativamente os custos de atualização e correção de dados em um data warehouse offline tradicional e resolve os desafios de consulta, atualização e correção de dados nas camadas intermediárias.

  • A solução apresenta um modelo unificado e uma arquitetura simplificada. A lógica do pipeline de ETL é implementada usando Flink SQL. Os dados nas camadas ODS, DWD e DWS são armazenados no Paimon. Isso reduz a complexidade arquitetônica e melhora a eficiência do processamento de dados.

Esta solução depende de três capacidades principais do Paimon, conforme detalhado na tabela a seguir.

Capacidade principal

Descrição

Atualizações de tabela de chave primária

O Paimon usa internamente uma estrutura de dados LSM tree para permitir atualizações eficientes de dados.

Para obter mais informações sobre tabelas de chave primária do Paimon e suas estruturas de dados subjacentes, consulte Primary Key Table e File Layouts.

Changelog Producer

O Paimon pode gerar dados incrementais completos para qualquer fluxo de dados de entrada, onde cada registro update_after tem um registro update_before correspondente. Isso garante que as alterações sejam totalmente propagadas para os sistemas downstream. Para obter mais informações, consulte {{XREF_2}}.

Merge Engine

Quando uma tabela de chave primária do Paimon recebe vários registros com a mesma chave primária, o Merge Engine mescla esses registros em um único registro para manter a unicidade da chave. O Paimon suporta uma ampla variedade de comportamentos de mesclagem, como deduplicação, atualizações parciais e pré-agregação. Para obter mais informações, consulte {{XREF_3}}.

Casos de uso

Este artigo usa uma plataforma de e-commerce como exemplo para demonstrar como construir um streaming data lakehouse. Esta solução processa e limpa dados para suportar consultas de aplicações upstream. Ao utilizar camadas de dados, esta solução permite a reutilização de dados em vários cenários de negócios, como painéis de transações, análise de dados comportamentais, rótulos de perfil de usuário e recomendações personalizadas.

image

  1. Construa a camada ODS: Ingestão em tempo real do banco de dados de negócios. O Flink ingere três tabelas de negócios do MySQL (orders, orders_pay e product_catalog) no OSS em tempo real. Esses dados, armazenados no formato Paimon, constituem a camada ODS.

  2. Construa a camada DWD: Tabela larga temática. As tabelas orders, product_catalog e orders_pay são unidas usando o mecanismo de mesclagem de atualização parcial do Paimon, criando uma tabela larga temática para a camada DWD e um changelog com latência de minutos.

  3. Construa a camada DWS: Cálculo de métricas. O Flink consome o changelog da tabela larga em tempo real. Ele usa o mecanismo de mesclagem de pré-agregação do Paimon para criar uma tabela de agregação intermediária, dwm_users_shops. Esse processo gera, por fim, duas tabelas para a camada DWS: dws_users para métricas de agregação de usuários e dws_shops para métricas de agregação de lojas.

Pré-requisitos

  • Ative o Data Lake Formation (DLF). Recomendamos o uso do DLF 2.5 como service de armazenamento. Para obter mais informações, consulte {{XREF_4}}.

  • Crie um workspace do Realtime Compute for Apache Flink. Para obter mais informações, consulte {{XREF_5}}.

  • Crie uma instância Serverless do StarRocks. Para obter mais informações, consulte {{XREF_6}}.

Nota

Sua instância do StarRocks, o DLF e o workspace do Flink devem estar na mesma região.

Limites

Esta solução de streaming lakehouse requer o Ververica Runtime (VVR) 11.1.0 ou posterior.

Construir um streaming data lakehouse

Preparar a fonte de dados MySQL CDC****

Este tutorial usa o ApsaraDB RDS for MySQL como exemplo. Você criará um banco de dados chamado order_dw e três tabelas com dados de amostra.

  1. {{XREF_7}}.

    Importante

    Certifique-se de que a instância do ApsaraDB RDS for MySQL e seu workspace do Realtime Compute for Apache Flink estejam na mesma VPC. Se estiverem em VPCs diferentes, consulte {{XREF_8}}

  2. {{XREF_9}}.

    Crie um banco de dados chamado order_dw. Em seguida, crie uma conta privilegiada ou uma conta padrão com permissões de leitura e gravação para o banco de dados order_dw.

    Crie três tabelas e insira dados nelas.

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;

Gerenciar metadados

Criar um catálogo Paimon

  1. Faça login no console do Realtime Compute for Apache Flink.

  2. No painel de navegação à esquerda, acesse Metadata Management e clique em Create Catalog.

  3. Na aba Built-in Catalog, clique em Apache Paimon e, em seguida, clique em Next.

  4. Configure os parâmetros a seguir, selecione DLF como tipo de armazenamento e clique em OK.

    Parâmetro

    Descrição

    Obrigatório

    Observações

    metastore

    O tipo de metastore.

    Sim

    Neste exemplo, selecione DLF.

    catalog name

    O nome do catálogo de dados do DLF.

    Importante

    Se você usar um usuário RAM ou uma função RAM, certifique-se de que o usuário RAM ou a função RAM tenha as permissões necessárias para ler e gravar dados no DLF. Para obter mais informações, consulte {{XREF_10}}.

    Sim

    Recomendamos que você use {{XREF_11}}. Esta versão elimina a necessidade de inserir informações como um par de AccessKey e permite selecionar rapidamente um catálogo de dados DLF existente. Para obter informações sobre como criar um catálogo de dados, consulte {{XREF_12}}.

    Após criar um catálogo de dados chamado paimoncatalog, selecione-o na lista.

  5. No catálogo de dados, crie um banco de dados chamado order_dw para sincronizar todas as tabelas do banco de dados order_dw do MySQL.

    No painel de navegação à esquerda, escolha Data Exploration > Query Editor e clique em New para abrir uma janela de consulta temporária.

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;

    A mensagem retornada The following statement has been executed successfully! indica que o banco de dados foi criado com sucesso.

Para obter mais informações sobre como usar catálogos Paimon, consulte {{XREF_13}}.

Criar um catálogo MySQL

  1. Na página Metadata Management, clique em Create Catalog.

  2. Na aba Built-in Catalog, clique em MySQL e, em seguida, clique em Next.

  3. Configure os parâmetros a seguir e clique em OK para criar um catálogo MySQL chamado mysqlcatalog.

    Parâmetro

    Descrição

    Obrigatório

    Observações

    catalog name

    O nome do catálogo.

    Sim

    Insira um nome personalizado. Este tutorial usa mysqlcatalog.

    hostname

    O endereço IP ou hostname do banco de dados MySQL.

    Sim

    Para obter mais informações, consulte {{XREF_14}}. Como a instância do ApsaraDB RDS for MySQL e o workspace do Realtime Compute for Apache Flink estão na mesma VPC, insira o endpoint interno.

    port

    O número da porta do service de banco de dados MySQL. O valor padrão é 3306.

    Não

    Para obter mais informações, consulte {{XREF_15}}.

    default-database

    O nome do banco de dados MySQL padrão.

    Sim

    Insira o nome do banco de dados a ser sincronizado, que é order_dw neste tutorial.

    username

    O nome de usuário para o service de banco de dados MySQL.

    Sim

    Use a conta criada em {{XREF_16}}.

    password

    A senha para o service de banco de dados MySQL.

    Sim

    Use a senha da conta criada em {{XREF_17}}.

Construir a camada ODS: Ingestão em tempo real

Construa a camada ODS em uma única etapa usando um job de ingestão de dados Flink CDC no formato YAML para sincronizar dados do MySQL para o Paimon.

  1. Crie e inicie o job de ingestão de dados YAML.

    1. No console do Realtime Compute for Apache Flink, acesse a página Data Development > Data Ingestion e crie um job de rascunho YAML em branco chamado ods.

    2. Copie o código a seguir para o editor e atualize parâmetros como nome de usuário e senha.

      SELECT
        order_create_time AS order_create_date,
        order_product_catalog_name,
        COUNT(*),
        SUM(order_fee)
      FROM
        paimoncatalog.order_dw.dwd_orders
      WHERE
        order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
      GROUP BY
        order_create_date, order_product_catalog_name
      ORDER BY
        order_create_date, order_product_catalog_name;

      Parâmetro

      Descrição

      Obrigatório

      Exemplo

      catalog.properties.metastore

      O tipo de metastore. Defina como rest.

      Sim

      rest

      catalog.properties.token.provider

      O provedor de token. Defina o valor como dlf.

      Sim

      dlf

      catalog.properties.uri

      A URI de acesso para o DLF Rest Catalog Server é http://[region-id]-vpc.dlf.aliyuncs.com. Para obter mais informações sobre o ID da Região, consulte {{XREF_18}}.

      Sim

      http://cn-beijing-vpc.dlf.aliyuncs.com

      catalog.properties.warehouse

      O nome do catálogo DLF.

      Sim

      paimoncatalog

      hostname

      O endereço IP ou hostname do banco de dados MySQL. Para obter mais informações, consulte {{XREF_19}}. Como a instância do ApsaraDB RDS for MySQL e o workspace do Realtime Compute for Apache Flink estão na mesma VPC, insira o endpoint interno.

      Sim

      rm-bp1e****566g.mysql.rds.aliyuncs.com

      username

      O nome de usuário do banco de dados MySQL. Recomendamos o uso de gerenciamento de segredos. Para obter mais informações, consulte {{XREF_20}}.

      Sim

      ${secret_values.username}

      password

      A senha do banco de dados MySQL. Recomendamos o uso de gerenciamento de segredos. Para obter mais informações, consulte {{XREF_21}}.

      Sim

      ${secret_values.password}

      Para otimizar o desempenho de gravação do Paimon, consulte {{XREF_22}}.

    3. No canto superior direito, clique em Deploy.

    4. Em O&M Center > Job O&M, clique em Start na coluna Actions do job ODS recém-implantado e selecione stateless start para iniciar o job. Para obter mais informações sobre configurações de inicialização de job, consulte {{XREF_23}}.

  2. Visualize os dados nas três tabelas que foram sincronizadas do MySQL para o Paimon.

    No console do Realtime Compute for Apache Flink, acesse a página Data Development > Data Exploration. Na aba Query Editor, copie o código a seguir para o editor, selecione a instrução e clique em Run no canto superior direito.

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;

    Após a execução da consulta, sete registros de pedidos da tabela orders são retornados. O resultado inclui as colunas order_id (100001 a 100007), user_id, shop_id, product_id, buy_fee (1000 a 5000), create_time, update_time e state. O valor para state é 1 para todos os registros.

Construir a camada DWD: tabela larga temática

  1. Crie a tabela larga dwd_orders

    No console do Realtime Compute for Apache Flink, acesse a página Data Development > Data Exploration. Na aba Query Editor, copie o código a seguir para o editor, selecione a instrução e clique em Run no canto superior direito.

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;

    A mensagem The following statement has been executed successfully! indica uma criação bem-sucedida.

  2. Consuma dados de alteração do ODS

    No console do Realtime Compute for Apache Flink, acesse a página Data Development > ETL. Crie um novo job de streaming SQL chamado dwd, copie o código a seguir para o editor SQL, clique em Deploy e inicie o job usando Stateless Start.

    Este job SQL une a tabela orders com a tabela product_catalog em uma junção de tabela de dimensão. Em seguida, ele grava o resultado na tabela dwd_orders junto com os dados da tabela orders_pay. O mecanismo de mesclagem de atualização parcial do Paimon une registros das tabelas orders e orders_pay que possuem o mesmo order_id.

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;
  3. Visualize os dados em dwd_orders

    No console do Realtime Compute for Apache Flink, acesse a página Data Development > Data Exploration. Na aba Query Editor, copie o código a seguir para o editor, selecione a instrução e clique em Run no canto superior direito.

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;

    Após a execução bem-sucedida da consulta, sete registros de pedidos da tabela larga dwd_orders são retornados. O resultado inclui oito campos: order_id, order_user_id, order_shop_id, order_product_id, order_product_catalog_name, order_fee, order_create_time e order_update_time. O order_id varia de 100001 a 100007, as taxas de pedido variam de 1000 a 5000 e todos os horários de criação são em 2023-02-15.

Construir a camada DWS: cálculo de métricas

  1. Crie as tabelas agregadas da camada DWS dws_users e dws_shops.

    No console do Realtime Compute for Apache Flink, acesse a página Data Development > Data Exploration. Na aba Query Editor, copie o código a seguir para o editor, selecione a instrução e clique em Run no canto superior direito.

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;

    A mensagem The following statement has been executed successfully! indica que a criação foi bem-sucedida.

  2. Consuma dados de alteração da tabela dwd_orders da camada DWD.

    No console do Realtime Compute for Apache Flink, acesse a página Data Development > ETL, crie um novo job de streaming SQL chamado dwm. Copie o código a seguir para o editor SQL, clique em Deploy e inicie o job usando Stateless Start.

    Este job SQL grava dados da tabela dwd_orders na tabela dwm_users_shops. O mecanismo de mesclagem de dados de pré-agregação do Paimon soma automaticamente o order_fee para calcular o valor total gasto por um usuário em uma loja. Ele também soma o valor 1 para calcular o número de vezes que um usuário fez uma compra nessa loja.

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;
  3. Consuma dados de alteração da tabela dwm_users_shops da camada DWM em tempo real.

    No console do Realtime Compute for Apache Flink, acesse a página Data Development > ETL. Crie um novo job de streaming SQL chamado dws. Copie o código a seguir para o editor SQL, clique em Deploy e inicie o job usando Stateless Start.

    Este job SQL grava dados da tabela dwm_users_shops nas tabelas dws_users e dws_shops. O mecanismo de mesclagem de dados de pré-agregação do Paimon é usado para calcular o gasto total de cada usuário (paid_buy_fee_sum) na tabela dws_users. Na tabela dws_shops, ele calcula as vendas totais da loja (paid_buy_fee_sum), o número de usuários compradores (somando 1) e o número total de compras (pv).

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;
  4. Visualize os dados nas tabelas dws_users e dws_shops.

    No console do Realtime Compute for Apache Flink, acesse a página Data Development > Data Exploration. Na aba Query Editor, copie o código a seguir para o editor, selecione a instrução e clique em Run no canto superior direito.

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;

    Após a execução da consulta, a tabela dws_users retorna três registros com as seguintes colunas: user_id, ds e paid_buy_fee_sum. Os registros são: user_001 / 20230215 / 8000, user_002 / 20230215 / 5000 e user_003 / 20230215 / 5000.

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;

    Ao consultar a tabela dws_shops, o resultado contém quatro linhas e cinco colunas: shop_id, ds, paid_buy_fee_sum, uv e pv. Os shop_ids são 12345 a 12348, ds é 20230215 para todos os registros, os valores de paid_buy_fee_sum são 5000, 4000, 7000 e 2000, os valores de uv são 1, 1, 2 e 2, e os valores de pv são 1, 1, 3 e 2, respectivamente.

Capturar alterações do banco de dados de negócios

Após construir o streaming data lakehouse, teste sua capacidade de capturar alterações do banco de dados de negócios.

  1. Insira os seguintes dados no banco de dados order_dw no MySQL.

    SELECT
      order_create_time AS order_create_date,
      order_product_catalog_name,
      COUNT(*),
      SUM(order_fee)
    FROM
      paimoncatalog.order_dw.dwd_orders
    WHERE
      order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
    GROUP BY
      order_create_date, order_product_catalog_name
    ORDER BY
      order_create_date, order_product_catalog_name;
  2. Visualize os dados nas tabelas dws_users e dws_shops. No console do Realtime Compute for Apache Flink, acesse a página Data Development > Data Exploration. Na aba Query Editor, copie o código a seguir para o editor, selecione a instrução e clique em Run no canto superior direito.

    • Tabela dws_users

      SELECT
        order_create_time AS order_create_date,
        order_product_catalog_name,
        COUNT(*),
        SUM(order_fee)
      FROM
        paimoncatalog.order_dw.dwd_orders
      WHERE
        order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
      GROUP BY
        order_create_date, order_product_catalog_name
      ORDER BY
        order_create_date, order_product_catalog_name;

      A consulta retorna três linhas com as seguintes colunas: user_id, ds e paid_buy_fee_sum. Os registros são: user_001 / 20230215 / 11000, user_002 / 20230215 / 6000 e user_003 / 20230215 / 7000.

    • Tabela dws_shops

      SELECT
        order_create_time AS order_create_date,
        order_product_catalog_name,
        COUNT(*),
        SUM(order_fee)
      FROM
        paimoncatalog.order_dw.dwd_orders
      WHERE
        order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
      GROUP BY
        order_create_date, order_product_catalog_name
      ORDER BY
        order_create_date, order_product_catalog_name;

      A consulta retorna quatro linhas com cinco colunas: shop_id, ds, paid_buy_fee_sum, uv e pv. Os shop_ids são 12345, 12346, 12347 e 12348, ds é 20230215 para todos os registros, os valores de paid_buy_fee_sum são 8000, 4000, 7000 e 5000, os valores de uv são 1, 1, 2 e 3, e os valores de pv são 2, 1, 3 e 4, respectivamente.

Usar o streaming data lakehouse

A seção anterior demonstrou como criar um catálogo Paimon e gravar em tabelas Paimon no Flink. Esta seção mostra alguns casos de uso simples de análise de dados usando o StarRocks após a configuração do streaming data lakehouse.

Conectar o StarRocks ao DLF

Para obter mais informações, consulte {{XREF_24}}.

Consulta de classificação

A consulta StarRocks a seguir analisa a tabela agregada na camada DWS para recuperar as três principais lojas por valor de transação em 15 de fevereiro de 2023.

SELECT
  order_create_time AS order_create_date,
  order_product_catalog_name,
  COUNT(*),
  SUM(order_fee)
FROM
  paimoncatalog.order_dw.dwd_orders
WHERE
  order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
GROUP BY
  order_create_date, order_product_catalog_name
ORDER BY
  order_create_date, order_product_catalog_name;

A consulta retorna três linhas: rn=1 corresponde a shop_id=12345 e paid_buy_fee_sum=8000.00; rn=2 corresponde a shop_id=12347 e paid_buy_fee_sum=7000.00; e rn=3 corresponde a shop_id=12348 e paid_buy_fee_sum=5000.00.

Consulta de detalhes

A consulta StarRocks a seguir analisa a tabela larga na camada DWD para recuperar os detalhes do pedido de um cliente específico que usou uma plataforma de pagamento específica em fevereiro de 2023.

SELECT
  order_create_time AS order_create_date,
  order_product_catalog_name,
  COUNT(*),
  SUM(order_fee)
FROM
  paimoncatalog.order_dw.dwd_orders
WHERE
  order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
GROUP BY
  order_create_date, order_product_catalog_name
ORDER BY
  order_create_date, order_product_catalog_name;

A consulta retorna o seguinte resultado.

SELECT
  order_create_time AS order_create_date,
  order_product_catalog_name,
  COUNT(*),
  SUM(order_fee)
FROM
  paimoncatalog.order_dw.dwd_orders
WHERE
  order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
GROUP BY
  order_create_date, order_product_catalog_name
ORDER BY
  order_create_date, order_product_catalog_name;

Relatório de dados

A consulta StarRocks a seguir analisa a tabela larga na camada DWD para gerar um relatório sobre o número total de pedidos e o valor total dos pedidos para cada data e categoria de produto em fevereiro de 2023.

SELECT
  order_create_time AS order_create_date,
  order_product_catalog_name,
  COUNT(*),
  SUM(order_fee)
FROM
  paimoncatalog.order_dw.dwd_orders
WHERE
  order_create_time >= '2023-02-01 00:00:00'  and order_create_time < '2023-03-01 00:00:00'
GROUP BY
  order_create_date, order_product_catalog_name
ORDER BY
  order_create_date, order_product_catalog_name;

A consulta retorna nove registros, mostrando dados de pedidos horários das 10:40:56 às 18:40:56 em 15 de fevereiro de 2023. As categorias de produtos incluem phone_ddd, phone_aaa, phone_eee, phone_ccc e phone_bbb. Cada registro tem um count(*) de 1, e os valores de sum(order_fee) são 2000, 1000, 1000, 2000, 3000, 4000, 5000, 3000 e 1000, respectivamente.

Referências

  • {{XREF_25}}

  • {{XREF_26}}

  • {{XREF_27}}

  • Para construir um streaming lakehouse offline do Paimon usando processamento em lote do Flink, consulte {{XREF_28}}.