Todos os produtos
Search
Central de documentação

Hologres:Replicar dados do Simple Log Service

Última atualização: Jun 28, 2026

Transmita dados de log do Simple Log Service (SLS) para o Hologres para análise e consulta em tempo real. Este tópico aborda dois métodos de integração: Flink e integração de dados do DataWorks.

Escolher um método de integração

Flink

Integração de dados do DataWorks

Complexidade de configuração

Maior — exige escrita de jobs Flink SQL

Menor — mapeamento visual de campos, sem código

Flexibilidade

Alta — permite analisar ou transformar JSON em trânsito

Padrão — mapeia campos conforme recebidos

Mais indicado para

Equipes que já usam Realtime Compute for Apache Flink ou precisam transformar dados antes da ingestão

Equipes que usam DataWorks ou buscam configuração rápida sem lógica personalizada

Se você já usa Realtime Compute for Apache Flink, opte pelo método Flink. Caso contrário, comece pela integração de dados do DataWorks para uma configuração mais ágil.

Como funciona

O SLS coleta e armazena logs, métricas e rastreamentos. O Hologres é um data warehouse em tempo real compatível com consultas interativas em subsegundos em grandes conjuntos de dados. Ao conectar os dois serviços, você ingere dados do SLS assim que chegam e os consulta imediatamente no Hologres.

Fluxo de dados de cada método:

  • Flink: Logstore do SLS → tabela source do Flink → transformação Flink SQL → tabela sink do Hologres

  • DataWorks: fonte de dados Loghub do SLS → tarefa de sincronização em tempo real → fonte de dados do Hologres

Pré-requisitos

Antes de começar, verifique se você tem:

Preparar dados do SLS

Ambos os métodos usam a mesma fonte de dados do SLS. Este exemplo usa logs simulados de login e consumo de jogos da plataforma SLS. Se você já tem dados corporativos, use-os diretamente.

  1. Faça login no console do Simple Log Service.

  2. Na seção Data Ingestion, clique em Simulate Data.

  3. Na aba Simulate Data, clique em Simulate abaixo de Game Operation Logs.

  4. Na página Select Log Space, selecione um Project e um Logstore e clique em Next.

  5. Na página Simulate Data, defina o escopo e a frequência e clique em Start Import.

O campo content é do tipo JSON. Os campos simulados e os dados de amostra têm a seguinte aparência:

Simulated data

Para mais informações sobre como consultar esses dados no SLS, consulte Início rápido para consulta e análise.

Gravar dados do SLS no Hologres usando o Flink

Etapa 1: Criar uma tabela no Hologres

Crie uma tabela de destino no Hologres. Adicione índices aos campos que você pretende consultar frequentemente para melhorar o desempenho. Para obter todas as opções de Data Definition Language (DDL), consulte Criar uma tabela.

CREATE TABLE sls_flink_holo (
    content JSONB,
    operation TEXT,
    uid TEXT,
    topic  TEXT,
    source TEXT,
    c__timestamp TIMESTAMPTZ,
    receive_time BIGINT,
    PRIMARY KEY (uid)
);

Etapa 2: Gravar dados usando o Flink

Crie um job Flink SQL com uma tabela source do SLS e uma tabela sink do Hologres e insira dados entre elas.

Para obter informações básicas sobre os conectores usados aqui:

Como o Flink não tem um tipo JSON nativo, o campo content usa VARCHAR como substituto. Os dados JSON são gravados diretamente no Hologres, que os armazena como JSONB. Alternativamente, analise o JSON no Flink antes da gravação.

Definir a tabela source do SLS:

CREATE TEMPORARY TABLE sls_input (
    content STRING,
    operation STRING,
    uid STRING,
    `__topic__` STRING METADATA VIRTUAL,
    `__source__` STRING METADATA VIRTUAL,
    `__timestamp__` BIGINT METADATA VIRTUAL,
    `__tag__` MAP<VARCHAR, VARCHAR> METADATA VIRTUAL
)
WITH (
    'connector' = 'sls',
    'endpoint' = '<sls-private-endpoint>',    -- Private endpoint of the SLS project
    'accessid' = '<your-access-key-id>',      -- AccessKey ID
    'accesskey' = '<your-access-key-secret>', -- AccessKey secret
    'starttime' = '2024-08-30 00:00:00',      -- Start time to consume logs
    'project' = '<your-sls-project>',         -- SLS project name
    'logstore' = '<your-logstore>'            -- Logstore name
);

Definir a tabela sink do Hologres:

CREATE TEMPORARY TABLE hologres_sink (
    content VARCHAR,
    operation VARCHAR,
    uid VARCHAR,
    topic  STRING,
    source STRING,
    c__timestamp TIMESTAMP,
    receive_time BIGINT
)
WITH (
    'connector' = 'hologres',
    'dbname' = '<your-holo-database>',       -- Hologres database name
    'tablename' = '<your-holo-table>',       -- Hologres destination table name
    'username' = '<your-access-key-id>',     -- AccessKey ID
    'password' = '<your-access-key-secret>', -- AccessKey secret
    'endpoint' = '<your-holo-vpc-endpoint>'  -- VPC endpoint of the Hologres instance
);

Inserir dados:

Todos os campos de metadados da source do SLS (__topic__, __source__, __timestamp__, __tag__) são mapeados para as colunas correspondentes do Hologres. O timestamp Unix __timestamp__ é convertido para TIMESTAMP, e __receive_time__ é extraído do mapa de tags e convertido para BIGINT.

INSERT INTO hologres_sink
SELECT
   content,
   operation,
   uid,
   `__topic__`,
   `__source__`,
   CAST(FROM_UNIXTIME(`__timestamp__`) AS TIMESTAMP),
   CAST(__tag__['__receive_time__'] AS BIGINT) AS receive_time
FROM
   sls_input;

Para obter etapas sobre como desenvolver e executar jobs SQL no Flink, consulte Mapa de desenvolvimento de jobs e Iniciar um job.

Etapa 3: Verificar dados no Hologres

Após o início do job Flink, consulte a tabela de destino para confirmar o fluxo de dados:

Query data

Gravar dados do SLS no Hologres usando a integração de dados do DataWorks

Etapa 1: Criar uma tabela no Hologres

Crie uma tabela de destino no Hologres. Neste exemplo, uid atua como chave primária (garante a unicidade das linhas) e como chave de distribuição (direciona linhas com o mesmo uid para o mesmo shard, melhorando o desempenho da consulta). O campo timestamp é definido como a coluna de tempo do evento.

BEGIN;
CREATE TABLE sls_dw_holo (
    content JSONB,
    operation TEXT,
    uid TEXT,
    C_Topic  TEXT,
    C_Source TEXT,
    timestamp BIGINT,
    PRIMARY KEY (uid)
);
CALL set_table_property('sls_dw_holo', 'distribution_key', 'uid');
CALL set_table_property('sls_dw_holo', 'event_time_column', 'timestamp');
COMMIT;

Para mais opções de DDL, consulte Criar uma tabela.

Etapa 2: Configurar fontes de dados

Adicione ambas as fontes de dados ao seu workspace do DataWorks antes de criar uma tarefa de sincronização.

Etapa 3: Criar uma tarefa de sincronização em tempo real

Crie e execute uma tarefa de sincronização em tempo real na integração de dados do DataWorks. Defina a entrada como a fonte de dados LogHub e a saída como a fonte de dados do Hologres. Configure o mapeamento de campos conforme mostrado abaixo:

Field mapping

Para obter etapas detalhadas, consulte Configurar uma tarefa de sincronização em tempo real para dados incrementais em uma única tabela.

Etapa 4: Verificar dados no Hologres

Após o início da tarefa de sincronização, consulte a tabela de destino para confirmar o fluxo de dados:

Query data

Solucionar problemas comuns

Sintoma

Causa provável

Resolução

Falha ao iniciar o job Flink

Endpoint ou credenciais incorretas na cláusula WITH do conector

Verifique o endpoint privado do SLS, o AccessKey ID e o AccessKey secret. Confirme se o endpoint VPC do Hologres corresponde à região da instância.

Nenhum dado aparece na tabela do Hologres

O job Flink está em execução, mas o starttime está definido muito cedo ou muito tarde

Ajuste o starttime na definição da tabela source do SLS para alinhá-lo ao momento em que os logs foram gravados.

Erro de conversão de tipo em __timestamp__

FROM_UNIXTIME retorna TIMESTAMP sem fuso horário; a coluna de destino é TIMESTAMPTZ

Converta o resultado para TIMESTAMPTZ em vez de TIMESTAMP ou altere o tipo da coluna de destino.

A tarefa de sincronização do DataWorks relata incompatibilidade de campos

Nomes ou tipos de campos de origem e destino não coincidem

Na configuração de mapeamento de campos da tarefa de sincronização, alinhe manualmente os campos de origem e destino.

Próximos passos

  • Para otimizar o desempenho das consultas no Hologres, considere adicionar índices bitmap ou configurar chaves de clustering na tabela de destino. Consulte Criar uma tabela.

  • Para monitorar seu job Flink, use o painel de monitoramento de jobs no console do Flink.

  • Para monitorar sua tarefa de sincronização do DataWorks, consulte O&M para tarefas de sincronização em tempo real.