top of page
Posts do fórum
daniel.fitipaldi
02 de abr. de 2023
In Big Data
O Apache Kafka é uma plataforma de streaming de dados distribuída de alto desempenho, que permite que grandes volumes de dados sejam processados e transmitidos em tempo real entre aplicativos e sistemas distribuídos. Ele é escalável, tolerante a falhas e altamente disponível, permitindo que os dados sejam armazenados e transmitidos de forma segura e confiável em tempo real. Este artigo não se propõe a entrar nas especificidades do Kafka. Para saber mais sobre esse tema, publiquei recentemente esse texto. O objetivo aqui é mostrar como produzir e consumir mensagens utilizando o prompt de comando do Windows. Primeiramente, baixe e instale o Kafka no seu computador. Você pode fazer o download em https://kafka.apache.org/downloads. Depois, basta descompactar o arquivo em um diretório de sua escolha. É preciso ter o Java instalado na sua máquina (a recomendação é que seja a partir da versão 8), pois o Kafka é escrito nessa linguagem e executado na Java Virtual Machine (JVM). Após instalado, inicie o Zookeeper. Para isso, basta abrir o terminal do Windows e digitar o comando ...bin/zookeeper-server-start.sh config/zookeeper.properties observando o caminho da pasta que você instalou (cd <caminho do diretório Kafka). Em outro terminal, é a vez de iniciar o servidor Kafka com o comando: bin/kafka-server-start.sh config/server.properties. Abra mais um terminal para criar um tópico: bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic <nome do tópico> Agora já é possível produzir mensagens utilizando o comando que cria o producer: bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic <nome do tópico>. É possível fazer isso utilizando o mesmo terminal utilizado para criar o tópico ou, caso queira, abra um novo terminal. Após a execução desse comando, será aberto um prompt onde será possível digitar as mensagens a serem produzidas. Em um novo prompt de comando, é preciso criar o consumidor para receber as mensagens produzidas. bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic <nome do tópico> --from-beginning. Isso iniciará o consumo das mensagens produzidas, que aparecerão neste terminal. Para encerrar o zookeeper e o servidor Kafka, basta executar os respectivos comandos: bin\windows\kafka-server-stop.bat bin\windows\zookeeper-server-stop.bat
0
0
655
daniel.fitipaldi
01 de abr. de 2023
In Big Data
Atualmente as empresas têm um grande volume de dados para gerenciar e analisar. Para isso, é fundamental contar com soluções de análise de dados em tempo real que permitam tomar decisões de forma mais rápida e precisa. Uma das ferramentas mais utilizadas para este propósito é o Apache Kafka. O Kafka é uma plataforma de processamento de dados em streaming(tempo real) que permite a transmissão de dados em alta velocidade, com baixa latência e alta disponibilidade. Ele foi desenvolvido para suportar grandes volumes de dados e garantir a escalabilidade horizontal, ou seja, a capacidade de aumentar a capacidade de processamento de forma que não tenha impacto na performance. Uma de suas principais vantagens é a capacidade de se integrar com diversas fontes de dados, como bancos de dados e sistemas de mensageria. O Kafka também possui uma arquitetura distribuída, o que significa que os dados são processados em clusters, o que garante maior disponibilidade e tolerância a falhas. A ferramenta contém um mecanismo de gerenciamento de fluxo de dados, que permite controlar a forma como os dados são processados e distribuídos entre os clusters. Mais uma grande vantagem é a sua capacidade de processar dados em larga escala. Ele é capaz de lidar com milhões de eventos por segundo e ainda manter a consistência e a integridade dos dados. Isso é fundamental para empresas que precisam tomar decisões críticas, como em casos de fraudes financeiras ou problemas de segurança, por exemplo. Aliada à outras soluções de análise de dados, o Apache Kafka pode ajudar as empresas a tomar decisões ágeis e confiáveis, sendo fundamental para o sucesso dos negócios. Existem alguns conceitos relacionados ao Kafka e abaixo serão listados alguns deles: Tópicos: são canais de comunicação do Kafka, onde as mensagens são publicadas e consumidas. Cada tópico é identificado por um nome e pode ser dividido em várias partições. Brokers: são os servidores do Kafka responsáveis pelo armazenamento e processamento dos dados. Eles gerenciam as partições dos tópicos, mantendo o controle sobre a produção e o consumo dos dados. Partições: são unidades de armazenamento dos dados dentro de um tópico. Elas são distribuídas pelos brokers para permitir o balanceamento de carga e a escalabilidade do sistema. As partições garantem a tolerância a falhas, permitindo que os dados sejam replicados em vários brokers para evitar a perda de informações em caso de problemas técnicos. Producer: é um componente responsável por publicar dados em um tópico do Kafka. Ele é responsável por enviar as mensagens para os brokers, que por sua vez, armazenam as mensagens em partições diferentes. Consumer: é um componente responsável por consumir dados de um tópico. Ele lê as mensagens armazenadas nas partições dos brokers e as processa de acordo com a lógica de negócio. Cliente: é um componente que se comunica com os brokers do Kafka para produzir e consumir dados. Ele pode ser uma aplicação, um script ou uma ferramenta de linha de comando. Offset: é um número inteiro que identifica a posição de uma mensagem em uma partição. Ele é gerenciado pelo Kafka e permite que os consumidores possam controlar o ponto de leitura das mensagens em uma partição. Group: é um conjunto de consumidores que se inscrevem em um mesmo tópico. O Kafka garante que cada mensagem de uma partição seja entregue a apenas um consumidor dentro do mesmo grupo.
1
0
42
daniel.fitipaldi
31 de mar. de 2023
In Big Data
Se você é engenheiro ou cientista de dados, com certeza já trabalhou ou, pelo menos, já ouviu falar do Pandas. Ele é uma das bibliotecas mais populares do Python, pois oferece uma grande quantidade de funcionalidades para manipular dados, incluindo operações de seleção, filtragem, agregação e transformação. No entanto, uma de suas principais limitações é a questão de escalabilidade. Isso porque o Pandas é projetado para operar em memória e em um único nó. Assim, à medida que o tamanho dos dados aumenta, pode apresentar lentidão ou até mesmo travar. Dessa forma, é possível que quem trabalha com dados precise fazer uma migração de um projeto Pandas para o Apache Spark. O Spark é uma solução projetada para processar grandes conjuntos de dados de forma rápida e escalável. Ele divide os dados em pequenas partes e distribui o processamento dessas partes em diferentes nós de um cluster, permitindo que grandes quantidades de dados sejam processadas muito mais rapidamente do que seria possível em um único computador. Com a consolidação do Apache Spark, surgiram soluções para utilizar a biblioteca Pandas dentro do ambiente distribuído do Spark. Uma dessas soluções é a biblioteca Koalas, que permite que os usuários escrevam código Pandas e aproveitem a capacidade de processamento distribuído do Spark. No entanto, é importante mencionar que o Koalas apresenta algumas limitações, como problemas de escalabilidade em relação ao Spark nativo e restrições em relação a algumas operações oferecidas pelo Pandas. A solução mais recente é o pyspark.pandas, que é uma API projetada para ser otimizada para o Spark. Ela oferece suporte total às operações do Pandas e foi projetada para fornecer desempenho de alta velocidade em grandes conjuntos de dados. A biblioteca mantém a mesma sintaxe e operações do Pandas, aproveitando a capacidade de processamento distribuído do Spark. Com ela, é possível escrever código Pandas que pode ser executado em um cluster Spark sem precisar fazer muitas alterações. Além disso, a biblioteca oferece suporte a outras funcionalidades do Spark, como processamento de streaming, SQL e machine learning, permitindo que os usuários tirem proveito de todas as capacidades do Spark em um ambiente familiar do Pandas. Veremos agora um pequeno exemplo de código utilizando a biblioteca pandas, e depois o Pandas API. PANDAS # importando a biblioteca pandas import pandas as pd # Criando dataframe dados = {'nome': ['João', 'Carol', 'Carlos', 'Amanda'], 'idade': [23, 41, 13, 7], 'sexo': ['M', 'F', 'M', 'F']} df = pd.DataFrame(data=dados) # Verificando o tipo do dataframe print(type(df)) <class 'pandas.core.frame.DataFrame'> # Exibe as primeiras 5 linhas da base de dados df.head() # Separando homens e mulheres em novos dataframes df_homens = df[df['sexo'] == 'M'] df_mulheres = df[df['sexo'] == 'F'] # Média de idade entre os homens df_homens['idade'].mean() Out[7]: 18.0 # Média de idade entre as mulheres df_mulheres['idade'].mean() Out[8]: 24.0 PANDAS API: import pyspark.pandas as ps # Criando o mesmo dataframe, agora utilizando a biblioteca pyspark.pandas df2 = ps.DataFrame(data=dados) # Verificando o tipo do dataframe print(type(df2)) <class 'pyspark.pandas.frame.DataFrame'> # Realizando as mesmas operações anteriores, agora com o pyspark.pandas df2.head() # Separando homens e mulheres em novos dataframes df_homens = df[df['sexo'] == 'M'] df_mulheres = df[df['sexo'] == 'F'] # Média de idade entre os homens df_homens['idade'].mean() Out[14]: 18.0 # Média de idade entre as mulheres df_mulheres['idade'].mean() Out[15]: 24.0
0
0
277
daniel.fitipaldi
Mais ações
bottom of page