Ir para conteúdo principal Pular para conteúdo complementar

Conectando a fluxos de dados

Os seguintes serviços de streaming são suportados em projetos do Qlik Open Lakehouse. Os dados de eventos são continuamente ingeridos para garantir a disponibilidade quase em tempo real para integração de dados downstream, análise e IA, permitindo pipelines de baixa latência que refletem a atividade operacional mais atual.

Serviços de streaming, como o Apache Kafka e o Amazon Kinesis, fornecem pipelines duráveis e de alta taxa de transferência para capturar eventos operacionais à medida que ocorrem. Ao contrário das fontes baseadas em arquivos que dependem da ingestão em lote, as fontes de streaming entregam dados continuamente à medida que os eventos são produzidos, permitindo o processamento quase em tempo real sem esperar que os arquivos sejam gerados ou agendados. Os produtores publicam mensagens estruturadas ou semiestruturadas que retêm seu esquema e suportam particionamento. Todas as atualizações e exclusões para o mesmo registro devem usar a mesma chave de partição. O Kafka e o Kinesis garantem a ordenação apenas dentro de uma única partição ou shard, não em todo o tópico ou fluxo, então usar uma chave de partição consistente garante que as alterações para um determinado registro sejam processadas na sequência correta. Qlik também oferece suporte ao Amazon S3 como uma fonte de streaming para ingestão contínua de dados de eventos.

Ingestão de streaming versus ingestão em lote

A diferença entre fontes de dados de streaming e em lote é a seguinte:

  • Com ambas as fontes, os eventos são ingeridos eficientemente a cada minuto, suportando processamento de baixa latência e análises quase em tempo real.

  • Com fontes sem streaming, há primeiro um carregamento total dos dados existentes e, em seguida, as alterações são ingeridas. Você também pode recarregar os dados de carregamento total da fonte.

  • Com fontes de streaming, não há nenhuma distinção clara entre o carregamento inicial e os eventos posteriores. O Qlik pode gerenciar a retenção e também suporta partições.

Nota informativaAs tarefas de streaming são cobradas com base no uso de computação (vCores x tempo de execução) em vez do volume de dados.

Em um projeto do Qlik Open Lakehouse, as fontes de streaming só podem ser usadas com a Tarefa de aterrisagem de streaming e a Tarefa de transformação de streaming.

  • Os dados de streaming são ingeridos usando uma Tarefa de aterrisagem de streaming e, em vez de processar arquivos discretos, a Tarefa de aterrisagem de streaming lê os eventos à medida que chegam, aterrissa os dados no Amazon S3 e persiste os eventos como arquivos Avro. Essa abordagem preserva a evolução do esquema, suporta tipos de dados complexos como structs e oferece armazenamento eficiente com desempenho de consulta otimizado, mantendo um modelo de ingestão contínua.

  • Ao integrar dados de uma fonte de fluxo, uma Tarefa de transformação de streaming é adicionada automaticamente para cada conjunto de dados que será armazenado no formato do Iceberg. Opcionalmente, a Tarefa de transformação de streaming pode ser usada para padronizar estruturas, enriquecer cargas de eventos ou alinhar dados com modelos de consumo downstream.

  • Uma Tarefa de espelhamento de dados permite que conjuntos de dados de fontes de streaming sejam espelhados para armazéns de dados na nuvem, permitindo que sistemas downstream consumam eventos de streaming sem duplicar dados. Para obter mais informações, consulte Espelhamento de dados em um armazém de dados na nuvem.

Mapeamentos de tipo de dados

O esquema de origem inicial é baseado em uma amostra dos dados coletados antes da fase PREPARE ao criar seu projeto de pipeline, e a evolução do esquema é tratada no momento da leitura. Tarefas de espelhamento e outras tarefas downstream que não suportam STRUCT e ARRAY usam um tipo JSON. Os dados podem ser analisados usando SQL.

Os seguintes mapeamentos de tipo de dados se aplicam a todas as fontes de dados suportadas, mas variam de acordo com o tipo de arquivo de origem, e o seguinte deve ser observado:

  • Tipos de dados são inferidos a partir de uma amostra dos dados que estão sendo integrados. Por exemplo, se um campo contém apenas valores inteiros na amostra, ele é criado como INT8 nas tarefas de aterrisagem de streaming e transformação. Se os dados subsequentes incluírem valores fracionários de precisão dupla, os arquivos de aterrisagem contêm esses valores; no entanto, na Tarefa de transformação de streaming, se a configuração Alterar tipo de dados do campo estiver definida como Ignorar, a coluna permanece INT8 e os valores fracionários são truncados. Para evitar truncamento não intencional, certifique-se de que os dados de amostra incluam o intervalo completo de valores esperados antes da integração, ou configure Alterar tipo de dados do campo para Parar tarefa durante os estágios iniciais e ajuste os tipos de dados conforme necessário.

  • Se um campo for adicionado a uma estrutura na origem, ele é sempre adicionado ao destino de aterrisagem. Para transformação de streaming, o comportamento é aplicado de acordo com a opção escolhida em Configurações da tarefa de transformação de streaming > Evolução do esquema > Adicionar campos à estrutura (Aplicar ao destino, Ignorar, Parar tarefa).

  • Se um campo estiver ausente em um registro específico, ou um array estiver vazio, eles serão tratados como nulos.

  • Se um conjunto de dados for nivelado por um array, e um registro chegar onde esse array estiver vazio ou nulo, o sistema criará uma linha e o campo nivelado será nulo. Não será excluído automaticamente. Se você quiser excluir essas linhas, adicione manualmente um filtro, por exemplo, array_element IS NOT NULL.

  • Os tipos de dados exibidos na interface do usuário refletem a granularidade do conjunto de dados selecionado. Em arrays nivelados, o tipo de dados de cada elemento individual é exibido em vez da estrutura do array em si.

  • Um novo atributo não pode ser adicionado dentro de uma estrutura em um campo JSON aninhado, apenas no nível raiz.

  • Em tarefas de transformação de fluxo, o nivelamento é suportado apenas para um único nível de um array. Quando o nivelamento é aplicado a um array multinível, por exemplo, ARRAY<ARRAY<STRUCT>>, apenas o array externo é nivelado, resultando em ARRAY<STRUCT> em vez de uma ESTRUTURA totalmente nivelada. Além disso, a IU atual permite que o nivelamento seja configurado apenas no nível da coluna. Como resultado, selecionar um array multinível aplica implicitamente o nivelamento apenas ao primeiro nível da matriz.

JSON

Em arquivos JSON, o valor numérico na origem determina o tipo de dados de destino:

  • INT8 é usado para valores inteiros que se encaixam dentro do intervalo de inteiros suportado e não incluem um componente fracionário.

  • REAL8 (DOUBLE) é usado quando o valor contém um componente fracionário (número de ponto flutuante).

  • STRING é usado quando o valor numérico excede o intervalo máximo de inteiros suportado.

Tipos de dados são mapeados da seguinte forma:

Tipos de dados de origem Qlik Talend Data Integration tipos de dados
STRING STRING
NUMBER INT8
NUMBER REAL8
NUMBER STRING
BOOLEAN BOOLEAN
ARRAY ARRAY
OBJECT STRUCT

CSV, TSV, REGEX e SPLIT

Por padrão, todos os tipos de dados de origem são ingeridos como uma string. Use a opção Inferir tipos automaticamente para mapear tipos de origem e de destino da seguinte forma:

Tipos de dados de origem Qlik tipos de dados
NUMERIC INT8/REAL8
True/TRUE/true/False/FALSE/false BOOLEAN
TIMESTAMP Carimbos de data/hora no formato yyyy-MM-dd HH:mm:ss ou yyyy-MM-ddTHH:mm:ssz são analisados para um tipo de data/hora. Se um fuso horário for incluído, o valor será analisado como uma string.

Parquet

Arquivos Parquet suportam tipos de dados físicos e lógicos. Tipos de dados físicos definem como os valores são armazenados em disco, como INT32, DOUBLE ou BYTE_ARRAY. Tipos de dados lógicos fornecem significado semântico sobre a representação física, por exemplo, identificando se um valor inteiro representa uma data. Quando um tipo lógico é anexado a uma coluna Parquet e é compatível no Qlik Open Lakehouse (conforme listado abaixo), a tarefa de aterrisagem de streaming usa o tipo lógico ao definir o esquema de destino, em vez do tipo físico subjacente. Isso garante que os dados sejam interpretados corretamente, preserva a semântica pretendida, como precisão, escala e significado temporal, e resulta em esquemas mais precisos quando os dados são gravados em formatos downstream.

Os dados originados de arquivos Parquet são mapeados da seguinte forma:

Tipos de dados de origem Tipos lógicos Qlik Talend Data Integration tipos de dados
BOOLEAN   BOOLEAN
INT32   INT8
INT64   INT8
INT96   DATETIME
FLOAT   REAL8
DOUBLE   REAL8
BYTE_ARRAY   STRING (codificado como Base64)
FIXED_LEN_BYTE_ARRAY   STRING (codificado como Base64)
BYTE_ARRAY STRING STRING
BYTE_ARRAY ENUM STRING
INT32 DECIMAL INT8
INT64 DECIMAL INT8
FIXED_LEN_BYTE_ARRAY DECIMAL INT8/REAL8 (codificado como Base64)
BYTE_ARRAY DECIMAL INT8/REAL8 (codificado como Base64)
INT32 DATE DATE
INT32 TIME(MILLIS,true) INT8
INT64 TIME(MICROS,true) TIME
INT64 TIMESTAMP(MICROS,true) DATETIME
INT64 TIMESTAMP(MILLIS,true) DATETIME
TIPOS ANINHADOS   STRUCT
LIST   ARRAY
MAP   ARRAY<STRUCT>. Matriz de estruturas representando pares chave-valor.

Avro

Os seguintes mapeamentos se aplicam a arquivos Avro com o Schema Registry.

Tipos de dados de origem Tipos lógicos Qlik Talend Data Integration tipos de dados
BOOLEAN   BOOLEAN
INT   INT8
LONG   INT8
FLOAT   REAL8
DOUBLE   REAL8
BYTES   STRING
STRING   STRING
RECORD   STRUCT
ENUM   STRING
ARRAY   ARRAY
MAP   ARRAY<STRUCT>
UNION    
FIXED   STRING
BYTES DECIMAL DECIMAL
FIXED DECIMAL DECIMAL
INT DATE DATE
INT TIME-MILLIS INT8
INT TIME-MICROS TIME
LONG TIMESTAMP-MILLIS DATETIME
LONG TIMESTAMP-MICROS DATETIME

ORC

Os seguintes mapeamentos aplicam-se a arquivos ORC.

Tipos de dados de origem Qlik Talend Data Integration tipos de dados
BOOLEAN BOOLEAN
BYTE INT8
SHORT INT8
INT INT8
LONG INT8
DATE DATE
FLOAT REAL8
DOUBLE REAL8
TIMESTAMP DATETIME
BINARY STRING
DECIMAL REAL8
STRING STRING
VARCHAR STRING
CHAR STRING
LIST ARRAY
MAP ARRAY<STRUCT>. Matriz de estruturas representando pares chave-valor.
STRUCT STRUCT
UNION  

Limitações

As seguintes limitações aplicam-se a todas as fontes de dados:

  • Se seus arquivos forem de tipos diferentes, o que pode ocorrer quando eles se originam de várias fontes ou versões, a tarefa de transformação criada usando um único arquivo de amostra (por exemplo, durante o onboarding) não considera automaticamente essas diferenças.

  • Se você alterar os tipos de dados na tarefa de aterrisagem, por exemplo, porque precisa fazer hash dos dados, certifique-se de que os tipos de dados de transformação correspondam aos novos tipos de dados.

Fontes com suporte

Esta página ajudou?

Se você encontrar algum problema com esta página ou seu conteúdo – um erro de digitação, uma etapa ausente ou um erro técnico – avise-nos!