Fala dataholics, hoje trazendo uma novidade lançada durante o Databricks Summit 2023 e que pode preocupar muitos engenheiros de dados, mas calma, vamos entender um pouco mais sobre isso.
Foram muitos lançamentos legais e leva um tempo para digerirmos tudo e ir aprendendo aos poucos, hoje vamos falar sobre um dos lançamentos, o English SDK, compartilharei minhas primeiras impressões sobre esse SDK.
Inspirado no Github Copilot, o English SDK nasce para democratizar e facilitar a engenharia de dados (Ingestão, Transformação e geração de insights), usando o inglês como base, você pode passar instruções e ele gera o código em SQL ou PySpark e executa devolvendo um PySpark Dataframe.
O que veremos nesse post:
English SDK
Instalando English SDK
Usando English SDK
Considerações finais
Com o avanço da tecnologia e das IAs muito se fala no fim de muitas funções, lembro de quando começamos a migrar para Cloud muito se falava que a função DBA (Administradores de banco de dados) ia acabar, pois, tudo era mais simplificado e auto gerenciado, bom o DBA não morreu e nem está perto disso, claro que com avanço da tecnologia e IAs eles vão deixar de fazer tarefas repetitivas e administrativas para focar em entregar mais resultado pro negócio.
O mesmo está acontecendo na engenharia de dados com o avanço da AI, o boom do ChatGPT foi um grande divisor de águas, democratizando a IA para qualquer pessoa usar, eu mesmo uso muito no meu dia a dia. Mas agora estamos falando de IA que faz o seu código e executa para você, isso vai muito além do ChatGPT, mas calma, o engenheiro de dados não esta nem perto de morrer, precisamos entender onde essas novas IAs vão nos ajudar e extrair o melhor delas para entregarmos cada vez mais qualidade e com mais velocidade, talvez pararmos de gastar tanto tempo com transformações de dados e gastar mais tempo entendendo sobre os próprios dados, em como podemos agregar mais valor para o negócio.
O English SDK vem para democratizar a engenharia de dados, facilitando não só a vida dos engenheiros de dados, mas a de todos que querem entregar insights para o seu negócio.
A ideia principal é receber instruções em inglês e transformar em código PySpark e SQL retornando um Dataframe com as ingestões e transformações solicitadas.
Bom chega de falar, vamos ver se de fato o English SDK é tão evoluído assim?
Vamos começar pela instalação, que não é nada simples para configurar.
Para você conseguir usar todas as funcionalidades precisara de 3 chaves de autenticação e adicioná-las nas variáveis de ambiente do seu cluster Databricks:
OPENAI_API_KEY - Chave para utilizar o OpenAI LLMs
GOOGLE_CSE_ID - Chave do Custom Search Engine, utilizado para fazer buscas na internet
GOOGLE_API_KEY - Chave para acessar as APIs do Google
Então, note que não é só rodar o pip install.
Além de gerar a API Key no portal do OpenAI, você precisa ter um cartão de crédito vinculado para poder aumentar o limite de requisições na API, caso contrário você tomara erro de QUOTA.
Entre no portal da OpenAI vá na aba Billing, cadastre o seu cartão de crédito e automaticamente você já tem 120 dólares pre aprovados para usar.
Sim, você pagará $ cada requisição que você fizer, então vai com calma, apesar de ser barato para testar, avalie bem antes de produtizar algo, gastei 21 centavos de dólar apenas brincando por algumas horas.
Você precisa ter uma conta no Google para poder habilitar acesso na API do Custom Search API e também gerar uma token para acesso (GOOGLE_API_KEY).
No portal do Programmable Search Engine, você precisa criar sua engine de busca e pegar o Search Engine ID para usar na variável de ambiente GOOGLE_CSE_ID, esse cara permite fazer buscas na internet.
Agora sim, vamos à instalação.
Você pode fazer via pip install direto no seu notebook ou adicionar no seu cluster para instalar sempre que ele ligar.
Via comando:
pip install pyspark-ai
Via cluster libraries:
Agora que tudo esta instalado e configurado vamos testar.
O primeiro comando vamos importar os módulos e ativar o Spark_AI, note que estou usando o GPT-3.5-turbo, o GPT-4 não estava disponível para minha conta.
Agora vamos programar, mas ao invés de usar PySpark e SQL, vamos usar o inglês, falando nisso seu inglês ta em dia?
Pensei em várias coisas para brincar, testei muitas perguntas, confesso que tomei muitos erros, muitas vezes não faz o que você quer, às vezes pela forma que você pediu ou por limitação mesmo, mostrarei alguns exemplos.
Pedindo para trazer informações dos maiores projetos do Github, veja o resultado.
Vamos aos detalhes:
Note que ele encontrou um repositório no Github que contém as informações que pedimos, https://github.com/EvanLi/Github-Ranking.
Ele faz um web scraping nesse repositório, identifica as informações e trata elas, trazendo um modelo tabular.
Nessa requisição ele montou um comando em SQL para criar uma TEMP VIEW com as informações, obviamente isso para uma massa maior de dados começa ficar inviável.
Aqui está o Dataframe prontinho para usar.
Usaremos a função verify para validar informações dentro do Dataframe, estou perguntando se tem projetos com mais de 2000 issues abertas, o resultado é False, ou seja, não tem.
Se pedir maior que 1000 issues, temos 1 projeto e ele retorna True.
Note que ele mostra o código que executou.
Usando a função Explain para ele descrever o Dataframe.
'In summary, this dataframe is retrieving the project name, number of stars, number of forks, programming language, number of open issues, description, and last commit timestamp for each project in the `github_projects` view.'
Usando a função Plot para gerar gráficos com os dados.
Note que ele explica e mostra tudo que esta executando.
Esse é o gráfico gerado, você pode pedir em outros formatos como barras ou de torta.
Usando formato pie.
Agora faremos uma transformação no nosso Dataframe usando a função transform.
Observe que ele mostra o código em SQL utilizado, realizando um SUM e Group By por linguagem de programação.
Usando a função plot novamente, agora ele nos dá um gráfico de barras.
Uma vez que você ativou o Spark_AI pode usar com qualquer Dataframe, vamos testar com outro criado usando um JSON de um cluster Databricks.
Exemplo bem básico pedindo para expandir as custom tags.
Nesse aqui pedi para ele expandir as Spark Confs e renomear as colunas com o último trecho, exemplo, spark.databricks.acl.dfAclsEnabled nomear como dfAclsEnabled.
Resultado com as colunas renomeadas.
Ingerindo outros sites especificando os campos que você quer retornar, note que ele sempre mostra na tela uma INFO informando de qual site ele esta pegando as informações.
Bom, já da para ter uma noção do poder dessa ferramenta, ela ainda é muito nova então encontremos muitos problemas, muitas transformações que ela ainda não consegue realizar, mas sem dúvidas é muito promissora.
Fiz muitos testes com ingestão de vários Datasets diferentes e tive muita dificuldade com vários deles, pois, sempre retornava o que eu não queria, exemplo usando o meu Blog Data in Action, ela não retorna todos os posts.
Por algum motivo ele só traz 3 posts, tentei pedir de várias formas diferentes.
Quando informo a categoria ele traz mais informações, mas ainda não são todos os posts, possivelmente alguma limitação na hora de aplicar a coleta dos dados. Basicamente ele realiza um web scraping do site e trata as informações deixando num formato tabular para acessarmos com Dataframe.
Resultado da solicitação acima.
Tentei fazer uma brincadeira levantando os times de futebol e campeonatos do Brasil, mas é bem limitado, exemplo, pedindo os maiores campeões do campeonato Paulista, ele quebra e não retorna todos os times, mesmo tendo todas as informações na Wikipedia, nessa requsição só retornou 4 linhas e algumas com campos nulos.
Mas, mesmo quebrando a IA sabe quem é o melhor:
Brincadeiras a parte, se você olhar o código não tem sentido algum, ou seja, a IA não entendeu a pergunta, possivelmente devido ao Dataset estar quebrado e faltando dados.
Em resumo, ainda tem muitas limitações na parte de ingestão de dados e precisa detalhar bem a pergunta para chegar onde você quer, logo, fazer a pergunta certa é muito mais importante.
Resumindo o English SDK, basicamente tem 5 principais funções:
create_df - Ingestão de dados da Web
explain - Descrevendo o Dataframe
plot - Gerando gráficos com os dados do Dataframe
transform - Aplicando transformações em SQL e PySpark
verify - Validando dados dentro do Dataframe
Ingestão:
Usando a função create_df você consegue criar dataframe ingerindo conteúdo da Web, seja por meio de APIs ou Web Scraping, no final ele te devolve um Dataframe com os dados.
Para usos bem específicos pode ajudar, mas, para ingestão de verdade está muito longe, consumir grandes massas de dados seria inviável, então use com moderação.
Transformação:
Aqui é onde poderemos nos aventurar, aquele trabalho chato de ficar tratando JSONs, textos, CSV, você pode delegar para o SDK e deixar ele fazer o trabalho para você, entendo que o potencial dele está na automação das transformações e é onde de fato gastamos muito tempo.
Só reforçando, o engenheiro de dados não vai acabar tão cedo, mas precisamos nos adaptar as novas tecnologias e IAs e usá-las a nosso favor, não tem como jogar contra, quem ignorar as IAs, ficará rapidamente ultrapassado, então bora estudar, fica de olho aqui no Data In Action que vou postar mais sobre as novidades do Databricks Summit 2023.
Fazer as perguntas certas será o novo desafio.
Bônus:
Testando o English SDK importando dados do Github achei esse projeto sensacional com várias APIS free para você usar no dia a dia, seja para estudo ou trabalho.
Se ficar qualquer dúvida fique a vontade de me chamar no LinkedIn ou nas outras redes sociais, deixarei abaixo os links de referência.
Fique bem e até a próxima.
Referências:
Comments