paint-brush
O que diabos é DeltaStream?por@progrockrec
590 leituras
590 leituras

O que diabos é DeltaStream?

por Shawn Gordon5m2024/12/12
Read on Terminal Reader

Muito longo; Para ler

DeltaStream é um serviço gerenciado que permite que você use o Flink sem ter que lidar com o Flink.
featured image - O que diabos é DeltaStream?
Shawn Gordon HackerNoon profile picture


Quando perguntamos pela última vez, “O que diabos é???”, estávamos olhando para a plataforma de streaming de dados compatível com o protocolo __ Apache Kafka __® Fluxo de urdidura . Com dados de streaming, você precisa fazer algo com eles. Coloque-os em algum lugar como Apache Iceberg , Floco de neve , ou Tijolos de dados , ou consultar esses dados em voo para enriquecê-los e/ou filtrá-los antes de pousá-los. Existem algumas opções para o último, mas a maior delas é, sem dúvida, o projeto de código aberto Apache Flink . Olhar para Flink me levou a DeltaStream , que é o nosso assunto hoje. O que diabos é DeltaStream? Como ele funciona com o Flink e como ele é um companheiro do Kafka?

O que é Flink?

O Flink foi inicialmente aceito como um projeto Apache em dezembro de 2014, então ele já existe há algum tempo. O crescimento do processamento de fluxo levou a um interesse e uso acelerados nos últimos anos. O Flink é um sistema um tanto desafiador de se levantar e usar internamente, exigindo talento de engenharia dedicado. Até mesmo o AWS MSF serviço, embora mais fácil, ainda é bastante complexo. Utilizar Java, por exemplo, requer que você escreva sua consulta Java, gere um arquivo jar, compacte-o, carregue-o no S3, defina suas permissões e então execute-o.


Vou pegar emprestado da página da web do Apache Flink aqui. O Apache Flink é um framework e mecanismo de processamento distribuído para computações com estado em fluxos de dados ilimitados e limitados. O Flink foi projetado para rodar em todos os ambientes de cluster comuns e executar computações em velocidade na memória e em qualquer escala. Não quero replicar mais do que está no site deles, então se você não tem certeza sobre o Flink, dê uma olhada.

Usando DeltaStream

Em seu nível mais básico, o DeltaStream oferece a você o poder do Flink sem ter que lidar com o Flink. De forma alguma. Para meu teste, usei o deles Guia de início rápido para a interface da Web; observe que eles também têm uma CLI, que não testei.


Ao se inscrever, você ganha um teste gratuito de 14 dias. Um cluster Kafka de amostra chamado “trial_store” é criado e você pode usar em vez dos seus próprios dados para testar. A demonstração contém vários tópicos para brincar. Os ícones em AÇÕES permitem que você exclua um tópico ou visualize detalhes e conteúdo sobre e no tópico.


Navegador de tópicos DeltaStream


Aqui estão os detalhes do tópico pageviews para referência, que usaremos mais tarde.

Inspetor de tópicos DeltaStream


Certo, temos um cluster Kafka em andamento e tópicos nele. Agora, vamos fazer algo interessante. Como mencionado na introdução, a coisa mais interessante que posso fazer é enriquecer e/ou filtrar dados enquanto eles estão em voo antes de pousarem em seu destino final, como um banco de dados/warehouse/lake. Para esses propósitos, vamos para o Workspace.

Descrição do DeltaStream Workspace


Esta parte levou um tempo para se acostumar. Um banco de dados e um esquema no DeltaStream são apenas pastas organizacionais. Você pode criar 'n' número de bancos de dados e, dentro de um banco de dados, você pode ter 'n' número de esquemas. Os esquemas manterão o layout de definição dos seus objetos DeltaStream conhecidos como STREAM, CHANGELOG, MATERIALIZED VIEW e TABLE. Uma tabela se relaciona a uma tabela de banco de dados em algo como PostgreSQL, e a Materialized View é uma maneira de persistir os dados em um conjunto de resultados sem colocá-los em algum lugar específico. Não farei nada com nenhum deles neste blog; vou me concentrar em Stream e Changelog.


Estou criando um Stream do tópico pageviews no cluster Kafka na captura de tela a seguir. Penso nisso como criar uma definição de tabela do tópico. Atribuímos os nomes dos campos e informamos a eles qual tópico usar e qual é o formato dos dados. Não precisamos justificar totalmente o cluster trial_store, pois ele é definido como padrão na caixa de combinação na parte superior. Depois que esse comando for executado, ele será exibido em TestDB.public. Posso consultá-lo com algo como SELECT * FROM PAGEVIEWS e começarei a ver os dados no painel de resultados na parte inferior.


Exemplo de criação de fluxo DeltaStream


Em seguida, declaro um changelog apoiado pelo tópico do usuário e ordenado por UserID. Um changelog é semelhante a um stream, mas permite que você interprete eventos em um tópico como eventos UPSERT. Eventos exigem uma chave primária; DeltaStream interpreta cada evento como uma inserção ou atualização para a chave primária fornecida. Nesse caso, o changelog reflete detalhes específicos por usuário, como gênero e interesses.

Exemplo de log de alterações do DeltaStream


É aqui que começamos a nos divertir. Vou criar um novo fluxo que enriquece o fluxo de pageviews com dados do changelog users_log usando o userid como o valor-chave para ingressar. Isso agora me dá um tópico exclusivo no cluster com dados de dois tópicos diferentes. A partir daqui, posso filtrá-lo usando algo como regionid e gravar os resultados dessa consulta em um destino final, como um banco de dados, warehouse ou lake. Isso me permitiu enriquecer e filtrar dados em andamento antes de pousá-los, melhorando assim a latência e reduzindo os custos de computação e armazenamento.

Exemplo de DeltaStream Join

Resumo

Então, o que diabos é DeltaStream? É uma maneira muito simples de usar o Apache Flink sem saber nada sobre ele ou fazer algo diretamente com ele. Você viu no meu exemplo o quão direto foi conectar-se ao Apache Kafka e então ler, juntar e filtrar os dados. Outras conexões atualmente suportadas são Kinesis, PostgreSQL, Snowflake e Databricks, e me disseram que ClickHouse e Iceberg estarão disponíveis em breve.


Por fim, o DeltaStream dá a você o poder do Apache Flink sem ter que lidar com o Apache Flink, e você pode fazer isso usando SQL em vez de Java. Se você está lidando com dados de streaming ou procurando implementá-los, esta é definitivamente uma solução muito inteligente e conveniente.


Confira meus outros artigos What the Heck is… nos links abaixo:




**