A competitividade dos negócios, o barateamento do hardware e de soluções baseadas em software permitiram que as empresas ampliassem a forma de extrair e analisar dados. Dados internos e externos passaram a ser incorporados para fornecer subsídios aos gestores de negócio, que perceberam a vantagem competitiva adquirida com o fornecimento desses dados. Diante disso, a integração de dados (internos e externos) passou a ser uma tarefa fundamental nos projetos de análise atuais, especialmente em Big Data.
Confira o vídeo da etapa 3:
A forma tradicional de analisar dados nos negócios ficou comprometida com o aumento substancial do volume de dados disponível e a incorporação de dados não estruturados nos projetos. Isso porque quanto mais dados chegam à arquitetura mais requisitos de hardware são necessários para suportar a demanda. Não apenas isso, as decisões de negócio estão exigindo respostas cada vez mais rápidas.
Uma das tecnologias que emergiram a partir do Big Data e que pode ser considerado uma abordagem do tipo ELT é o Data Lake – que oferece uma solução para gerenciamento de grandes volumes de dados. São quatro estágios para implementação e construção de Data Lake nas empresas:
A utilização de Data Lake torna mais flexível a busca de novos insights, incluindo em fontes não estruturadas. De modo simplificado, um Data Lake pode ser imaginado como um imenso grid contendo bilhões de linhas e colunas. Ao contrário de uma planilha estruturada, cada célula desse grid pode conter um dado diferente (documento, imagem, post no Facebook etc.).
Outra poderosa ferramenta é o Apache Spark, um framework open-source poderoso para processamento eficiente e iterativo de grandes conjuntos de dados. Esse framework foi criado com o intuito de suprir algumas deficiências de processamento do Hadoop MapReduce – como a baixa eficiência para lidar com processamento iterativo e contínuo (streaming) de microlotes de dados. Vamos verificar quais os ingredientes que tornam o Apache Spark uma das soluções de Big Data mais atrativas para desenvolvedores e empresas?
Tudo isso em um ambiente distribuído, escalável, tolerante a falhas e extremamente veloz. Veja alguns casos da utilização do Apache Spark:
• Netflix: a empresa utiliza o Spark Streaming para obter insights de forma imediata (em tempo real) sobre como os usuários estão engajados em seu site. Dessa forma, a empresa tem a possibilidade de fornecer recomendações de filmes e/ou séries em tempo real.
• Pinterest: por meio de um pipeline de ETL, o Pinterest pode aproveitar os benefícios do Spark Streaming para obter informações de seus usuários em tempo real ao identificar como os usuários estão interagindo com os Pins.
Leia o artigo Apache Hadoop – Casos de sucesso no uso da tecnologia, João Paulo B. Nascimento apresenta o caso do Royal Bank of Scotland, um dos maiores bancos britânico, da companhia aérea British Airways, do Yahoo e do Facebook. Confira o que como o Apache Hadoop ajudou essas empresas.
Outro assunto importante que devemos entender quando tratamos de Big Data é a Internet da Coisas (IoT). Na Era da “Internet dos Computadores”, os principais atores para propagação dos dados são os seres humanos. Por outro lado, na Internet das Coisas os principais atores são coisas que ora consomem, ora produzem dados. Isso permite que os computadores sejam capazes de obter informações e aprender a resolver problemas do mundo real a partir dos dados obtidos pelas coisas e assim eles serão capazes de sentir e reagir ao mundo real servindo de apoio para decisões humanas.
A Internet das Coisas é constituída por um conjunto de objetos que estão interligados gerando massivamente informação. Contudo, é necessário que exista algum engine (mecanismo ou software que ofereça abstração) responsável por gerenciar toda essa gama de dispositivos, oferecendo segurança, escalabilidade, capacidade de processamento, entre outros adjetivos. Diante disso, existem algumas soluções no mercado que podem ser úteis para quem planeja analisar as informações desses dispositivos
É importante que você tenha em mente que as tecnologias mudam e os profissionais precisam acompanhar as tendências, estando preparados para lidar com novos cenários. A área de Big Data é considerada multidisciplinar, pois engloba o Data Science, o Data Analytics, Business Intelligence, Machine Learning. Assista o webinar Tendências para a área de Big Data em 2020, com o professor Angelo Assis.
A evolução dessas tecnologias impõe, muitas vezes, formas diferentes para lidar com o problema e, assim, precisamos ser profissionais flexíveis ou adaptáveis para aprender ou sugerir novas abordagens. Pois nossas decisões de análise impactam diretamente na eficácia da tomada de decisões.
CAPÍTULO 3 - FUNDAMENTOS PARA INTEGRAÇÃO ANALÍTICA, TÓPICOS AVANÇADOS E TENDÊNCIAS EM BIG DATA ANALYTICS
A partir da perspectiva do saber-fazer, são apresentados os seguintes objetivos de aprendizagem:
Apresentar conceitos e diferenças importantes para integração analítica em Big Data.
Definir tópicos avançados para análise de dados em tempo real com Apache Spark.
Apresentar conceitos e análises de Internet das Coisas (IoT) e suas aplicações.
Relatar as principais tendências no mundo de Big Data Analytics.
Quando as informações eram centralizadas em sistemas legados da empresa, o poder de análise e decisão era limitado ou restrito. Os dados eram cadastrados no sistema e a análise era realizada através de uma simples consulta no banco de dados, sem considerar fatores externos ou até mesmo outras fontes de dados da empresa. Além disso, era custoso você recuperar informações de dados textuais de forma automatizada. Então, trabalhar apenas com dados estruturados de forma centralizada era a alternativa mais viável para que o gestor pudesse tomar suas decisões.
A convergência das tecnologias tem seu papel de contribuição nesse cenário, uma vez que, nos dias atuais, as decisões são baseadas na análise de diversas tecnologias, tanto em termos de hardware (drones, sensores, servidores etc.) como também em software (linguagens e ferramentas de alto nível). A competitividade dos negócios, o barateamento do hardware e de soluções baseadas em software permitiram que as empresas ampliassem a forma de extrair e analisar dados. Dados internos e externos passaram a ser incorporados para fornecer subsídios aos gestores de negócio, que perceberam a vantagem competitiva adquirida com o fornecimento desses dados. Diante disso, a integração de dados (internos e externos) passou a ser uma tarefa fundamental nos projetos de análise atuais, especialmente em Big Data.
Por intermédio da integração, os gestores podem passar a ter informações agregadas de todos os segmentos da empresa. Assim, é possível utilizar informações de fluxos de caixa, balancete patrimonial, total de vendas e estratégias de marketing para tomar decisões mais consistentes e embasadas. Eventualmente, são incrementadas informações externas - como situação do mercado financeiro em um dado momento ou avaliação de posts em uma página que a empresa possui no Facebook para aperfeiçoar ou ampliar o escopo das análises de Big Data.
Neste capítulo mostraremos alguns conceitos relacionados à integração para análise de Big Data. Em seguida, exploraremos o Apache Spark de uma forma mais profunda. A utilização dessa ferramenta dará a possibilidade de se trabalhar com microlotes de dados - potencialmente útil para trabalhar com análise em tempo real. Apresentaremos também conceitos e aplicações de Internet das Coisas e principais tendências em Big Data Analytics.
Aproveite e bons estudos!
Pense em uma arquitetura típica de BI (Business Intelligence). Tradicionalmente, você extrai um conjunto de dados e os armazena em uma “zona de repouso” (Staging Area) - que, como foi mencionado no Capítulo 1, representa um Banco de Dados intermediário que armazena temporariamente os dados obtidos da(s) fonte(s) e; um Data Warehouse (DW) - que é um repositório que armazena informações centrais, úteis e prontas para rápido consumo. O ETL (Extract-Transform-Load) é um processo que faz o meio de campo entre o processo de coleta, a Staging Area e o DW. Como o próprio nome sugere, o processo de ETL é um conjunto de práticas que visa extrair um conjunto de dados de uma ou mais fontes e aplicar tarefas de limpeza e transformação nos dados, adequando-os em um formato de acordo com as regras de negócio. Por fim, define-se uma rotina de carga (normalmente diária) para alimentar o DW.
A partir disso, vamos supor que você esteja trabalhando em um projeto de uma empresa do ramo financeiro. Você coleta um conjunto de dados a partir de “n” fontes (externas e internas) e se depara com dados de diferentes formatos e estruturas. Estes dados que serão armazenados no DW precisam ter um schema definido. Tendo isso em mente, você realiza as limpezas necessárias - remoção de espaços em branco, caracteres especiais, entre outras inconsistências, aplica transformação de dados - modifica unidades (dólar para real), padronização de casas decimais, ajuste nos tipos de dados, seleção/remoção das variáveis de interesse etc. Ainda nesta fase, presume-se quais são as variáveis de interesse que serão carregadas no DW. Por fim, ao final do processo, os dados são armazenados no DW e representam uma informação otimizada e condensada que serão apresentadas ao usuário final. A Figura 1 sintetiza todo esse processo. Os Data Marts podem ser entendidos como um subconjunto do DW (dados de um setor da empresa, como marketing/financeiro ou contábil da empresa). Os dados podem ser obtidos de diferentes fontes e temporariamente armazenados em uma Staging Area. Um processo de ETL é aplicado antes da carga no DW, assim os dados ficam prontos para o usuário final.
O processo descrito anteriormente é iterativo e, portanto, é reinicializado de tempos em tempos. Como consequência, obtém-se um conjunto de dados históricos que pode ser posteriormente analisado. Normalmente, emprega-se uma rotina de carga em uma janela de 24h, para que o gestor possa tomar decisões diárias. Ao final da noite até aproximadamente o início da manhã, o gestor já tem informações atualizadas (do dia anterior). Ao longo de 30 dias, pode-se obter informações mais agregadas (semanais) devido ao conjunto de dados históricos mantidos no DW.
No entanto, a forma tradicional de analisar dados nos negócios ficou comprometida com o aumento substancial do volume de dados disponível e a incorporação de dados não estruturados nos projetos. Isso porque quanto mais dados chegam à arquitetura, mais requisitos de hardware são necessários para suportar a demanda. Não apenas isso, as decisões de negócio estão exigindo respostas cada vez mais rápidas. Por sua vez, a arquitetura de BI tradicional não consegue suportar a rápida ingestão de dados em um intervalo temporal mais curto, produzindo um efeito cascata: altas taxas de latência que comprometem as análises e, consequentemente, o apoio à tomada de decisão. Aumentar o número de servidores ou melhorar a capacidade de hardware muitas vezes não parece ser uma boa ideia, pois elevaria os custos de armazenamento e tornaria o problema cíclico.
Uma solução viável seria investir em tecnologias voltadas para o Big Data. Nesse caso, o Big Data poderia ser integrado à arquitetura para dar conta dessa elevada demanda em termos de armazenamento e processamento de dados. Você verá na próxima seção mais detalhes a respeito dessa integração.
2.1 ETL, ELT E DATA LAKE: CONCEITOS E IMPLEMENTAÇÃO
Como vimos, o processo de ETL é constituído de etapas bem definidas: extração, transformação e carga de dados. A etapa de extração, de fato, consiste na primeira etapa do processo. Antes de realizar a carga dos dados na Staging Area, define-se previamente um schema (schema-on-write) para armazenar esses dados estruturados, a fim de que o SGBD (Sistema de Gerenciamento de Banco de Dados) faça a leitura desses dados. É verdade que a definição prévia de um schema pode ser benéfica, especialmente em algumas situações nas quais o conjunto de dados e a complexidade do negócio são considerados baixos. Por exemplo, casos em que o analista sabe exatamente o que o usuário quer analisar. Contudo, na prática, em cenários mais complexos com dados de grande volume e variedade é prudente pensar em uma alternativa mais flexível, que possa fornecer uma solução de análise mais rica para os usuários.
Que tal você propor uma abordagem na qual não seja necessário definir previamente um schema de banco de dados (schema-on-read)? O ELT (Extract-Load-Transform) difere da abordagem tradicional de ETL. No ELT, os dados extraídos são armazenados na sua forma mais bruta e posteriormente serão selecionados (transformados) de acordo com as necessidades do negócio. Isso significa que não são todos os dados que precisam ser transformados, apenas os dados que realmente fazem sentido naquele momento. Essa abordagem ganhou destaque com o advento do Big Data, visto que para armazenar essa gama de dados com formatos e estruturas variáveis era necessário uma infraestrutura capaz de armazenar, oferecer processamento e escalabilidade suficiente para lidar com isso. Mais do que isso, o Big Data fornece a possibilidade de se trabalhar com dados distribuídos em commodities hardware, ou seja, máquinas de baixo custo. Caso haja necessidade, servidores hospedados em nuvem, tais como: Amazon S3, Microsoft Azure, IBM Analytics também podem ser uma alternativa para armazenamento e processamento de Big Data em ambientes de negócios.
O que você pode aprender disso? Note que algumas lacunas são preenchidas quando integramos ferramentas ou soluções voltadas para atender as demandas de Big Data aos processos tradicionais de análise de dados nos negócios - especialmente no que se refere a demandas para recursos de armazenamento e problemas de latência (processamento). Nesse sentido, uma infraestrutura de Big Data é capaz de oferecer recursos computacionais por meio de cluster de computadores (ou nós). Por exemplo, a família Apache Hadoop, que vimos no Capítulo 1, apresenta um conjunto de ferramentas para auxiliar tanto no armazenamento quanto no processamento e análise de dados não estruturados e/ou gerados em tempo real.
Um case interessante de aplicação do Data Lake pode ser encontrado no site <https://invent.ge/31fIJcX>.
Você pode consultar este artigo <https://bit.ly/3j1JHQg>, que apresenta um hands on (algo prático) ilustrando as diferenças entre o ETL e o ELT. Assim como são exibidas algumas vantagens e desvantagens entre as duas tecnologias.
Uma das tecnologias que emergiram a partir do Big Data e que pode ser considerado uma abordagem do tipo ELT é o Data Lake - que oferece uma solução para gerenciamento de grandes volumes de dados. Além disso, o Data Lake pode ser perfeitamente integrado a processos e análises de BI, possibilitando uma maior flexibilidade e escalabilidade dos dados que foram coletados. A Figura 2 exibe uma comparação gráfica entre o ETL tradicional e o Data Lake (ELT). Note que no primeiro caso, após o processo de coleta dos dados, os dados são organizados e estruturados em um schema predefinido e específico para que seja reconhecido no DW (representado por DWH). Por outro lado, em um Data Lake, os dados que chegam são armazenados na sua forma mais bruta e somente serão utilizados sob demanda, ou seja, a seleção de variáveis relevantes será realizada somente conforme as necessidades do momento. A transformação, por sua vez, ocorrerá após a etapa de carga. Uma tarefa opcional é combinar esse processo com o DW. Evidentemente que isso é algo que dependerá das necessidades específicas da organização ou do seu projeto.
FONTE: <https://www.xplenty.com/>. Acesso em: 20 nov. 2018.
O grupo McKinsey&Company aponta quatro estágios para implementação e construção de Data Lake nas empresas, conforme mostramos a seguir:
Landing zone (zona de pouso) ou dados brutos: é o primeiro estágio de um Data Lake, uma vez que os dados são coletados, eles podem ser armazenados em uma camada de gerenciamento presente em alguma infraestrutura de TI, que permite que os dados sejam armazenados em uma forma bruta antes de serem preparados para utilização. Para que isso se concretize, as organizações precisam se empenhar para implantar uma forte governança de dados, a fim de garantir sua consistência.
Ambiente de ciência de dados: nesse estágio, o Data Lake pode ser utilizado como plataforma de experimentação, ou seja, os cientistas podem se concentrar em realizar experimentos e análises, coletando informações relevantes e extraindo insights, inclusive para análises ad-hoc. Mais do que isso, podem ser construídas ferramentas comerciais e open-sources, combinando com o Data Lake para criar os ambientes de testes necessários.
Offload (descarga) para Data Warehouse: nesse momento, o Data Lake começa a ser integrado com o(s) Data Warehouse(s) existente(s). As empresas podem tirar proveito do baixo custo de armazenamento de um Data Lake e armazenar cold data (dados frios) - ou seja, aqueles dados que são raramente utilizados (ou inativos) e que muitas vezes são mantidos para fins de conformidade nas empresas. Assim, é possível não sobrecarregar o DW com informações que poderiam exceder suas limitações de armazenamento. Dessa forma, as empresas podem manter as extrações nos seus Bancos de Dados relacionais em seu(s) DW(s) e migrar tarefas de extração e transformação não suportadas no DW para o Data Lake, como dados não estruturados.
Componentes críticos de operações de dados: esse último estágio indica que provavelmente todas as informações que percorrem os sistemas da empresa estão passando de alguma forma pelo Data Lake. Este, por sua vez, torna-se um componente essencial na infraestrutura de dados implementada e fornece dados como um serviço por meio de uso intensivo de computação, que permite análise de dados mais avançada e inclui softwares com aprendizagem de máquina. As empresas podem criar aplicações para gerenciamento de desempenho.
O conceito de Data Lake é um novo mindset, não apenas a tecnologia de um grande repositório. Sua arquitetura é composta por um sistema de arquivos do Hadoop - HDFS com uma gama de diretórios e arquivos que têm sido explorados por grandes empresas, como Google, Netflix e Yahoo. Não é possível se limitar às tecnologias como Data Warehouses e Data Minings, em que os modelos de dados são previamente definidos e, portanto, limitam o escopo das perguntas possíveis. Especialmente considerando que a obtenção de um insight normalmente conduz a novas perguntas, que, por sua vez, geram novos conhecimentos. A utilização de Data Lake torna mais flexível a busca de novos insights, incluindo em fontes não estruturadas.
De modo simplificado, um Data Lake pode ser imaginado como um imenso grid contendo bilhões de linhas e colunas. Ao contrário de uma planilha estruturada, cada célula desse grid pode conter um dado diferente (documento, imagem, post no Facebook etc).
À primeira vista, o Data Lake parece um amontoado de dados sem controle, mas não é verdade. É necessário um processo eficaz de governança, que envolva segurança, controle de acesso e aderência a normas de compliance. A ideia de colocar todos os dados em um lugar e deixar que os usuários, por sua conta, façam suas buscas e correlações, gerando eles mesmos os insights é algo que torna o Data Lake tão atraente.
2.1.1 Integração de ETL no Hadoop
Você estudou no Capítulo 1 que o ecossistema Hadoop contém uma coleção de ferramentas que podem ser úteis para análises sofisticadas de Big Data. Para coletar dados de fontes estruturadas, como Bancos de Dados relacionais, você pode utilizar o Sqoop, que é uma ferramenta que utiliza comandos SQL para fazer a ingestão de dados no HDFS.
Por meio deste tutorial <https://bit.ly/2FBdyQW>, você pode aprender a instalar o SQOOP e importar dados do MySQL para o HDFS. Caso não tenha configurado o ambiente de execução, acesse este link: <https://bit.ly/2EoUDIs>.
Ainda tratando do processo de coleta e ingestão de dados em Big Data, você pode mover grandes quantidades de dados em streaming (logs, eventos, dados de redes sociais etc.) para o HDFS ou um Banco de Dados não relacional como o HBase. O Apache Flume possui controle de balanceamento de carga para garantir um fluxo constante de dados, mecanismos de tolerância a falhas, escalabilidade, entre outras características.
Sugerimos que você tente instalar, configurar e testar o Apache Flume por meio deste tutorial: <https://bit.ly/32g2iB8>. Neste tutorial, você utilizará o Apache Flume para coletar dados do Twitter e armazená-los no HDFS.
Em ambas ferramentas o processo de extração e carga são realizados. Uma vez que os dados estejam no HDFS, já é possível construir suas análises de Big Data utilizando, por exemplo, o Spark ou Mahout e aplicar algoritmos de Machine Learning. O Apache Mahout é um framework que permite a execução de aplicações de Machine Learning dentro de um ambiente escalável e distribuído. Você pode implementar técnicas voltadas para classificação, clusterização ou aplicar tarefas de mineração de dados. Enfim, você pode analisar tudo isso dentro de um cluster de máquinas que suporta o armazenamento e o processamento de grande volume de dados.
Que tal experimentar o Mahout e assim aplicar modelos de classificação ou clusterização em seus projetos? Por meio desse endereço <https://bit.ly/2YnpPiq> você pode aprender a preparar ou configurar o ambiente para utilizar o Apache Mahout. Experimente.
Como já mostramos no Capítulo 2, você pode também aplicar o Apache Kafka para criar um pipeline que colete dados diretamente das fontes, especialmente dados de fluxo contínuo (streaming). Essa plataforma possui mecanismos internos para tratamento de erros, além de uma arquitetura escalável que permite processar grandes volumes de dados que estão chegando a nossa infraestrutura de Big Data.
O Kafka é uma plataforma robusta e que pode ser implementada para processar dados em tempo real. Você pode aprender a instalar, configurar e implementar o Kafka por meio desse tutorial: <https://bit.ly/3ghjfQX>. Pratique
Uma das grandes vantagens em integrar essas ferramentas dentro dos processos tradicionais de BI é a questão do seu custo. Embora, eventualmente, o fator complexidade para implementação pese, se comparado a ferramentas proprietárias que estão prontas para utilização, as ferramentas que fazem parte do ecossistema Hadoop se destacam por serem livres de licença de uso open-source. Assim, você tem a tranquilidade de implementar e modificar seus projetos para uso pessoal, comercial ou com objetivos de pesquisa, entre outras finalidades. Na próxima seção, você aprenderá em mais detalhes sobre o Apache Spark. Antes, pratique o que você aprendeu nesta seção nas atividades a seguir.
Nesta seção exploraremos o Apache Spark, uma poderosa ferramenta para processamento e análise de dados de fluxo contínuo (streaming de dados). Você conhecerá um pouco sobre a arquitetura e os componentes do Spark, assim como alguns exemplos utilizando a linguagem Python. É recomendável que você tente praticar os exercícios ou tutoriais sugeridos para consolidar seus conhecimentos.
3.1 CONCEITOS E COMPONENTES CORE DO APACHE SPARK
O Apache Spark é um framework open-source poderoso para processamento eficiente e iterativo de grandes conjuntos de dados. Esse framework foi criado com o intuito de suprir algumas deficiências de processamento do Hadoop MapReduce - como a baixa eficiência para lidar com processamento iterativo e contínuo (streaming) de microlotes de dados. Tradicionalmente as operações de leitura-escrita em MapReduce são em disco (HFDS), apresentando altas taxas de latência em processos iterativos, ou seja, processos que são repetidos constantemente. Por outro lado, as operações no Spark são realizadas em memória, tornando o processamento muito mais veloz, ao mesmo tempo que herda mecanismos de tolerância a falhas e escalabilidade do MapReduce.
Essa característica permite que o Spark seja 100 vezes mais veloz que o Hadoop MapReduce. Apesar de ter sido desenvolvido na linguagem Java, o Spark fornece APIs para que você possa implementar aplicações de forma paralela e transparente, utilizando Python, Scala ou R. Além disso, o Spark fornece um conjunto de bibliotecas para construção de aplicações, conforme mostra a Figura 3.
Esse conjunto de bibliotecas é fornecido por intermédio do Spark Core, que é a plataforma-base que permite o funcionamento dessas bibliotecas. É possível dimensionar quão poderoso é o Spark por meio dessas bibliotecas. Por isso, é importante que você as conheça.
O primeiro componente que merece destaque é o Spark SQL. Ele permite o uso da linguagem SQL para realizar consultas e processar dados estruturados no Spark, tudo de forma distribuída e otimizada. Além de utilizar diretamente a linguagem SQL, você também tem a opção de usufruir das APIs projetadas nas linguagens de programação Java, Scala, Python ou R através de uma sintaxe simples e intuitiva. Caso você esteja habituado com consultas em HiveQL, o Spark SQL também fornece suporte. Observe um exemplo do Spark SQL na Figura 4:
FONTE: https://spark.apache.org/sql/>. Acesso em: 27 nov. 2018
Observe que os dados podem ser capturados e integrados a partir de diferentes fontes. Você pode construir um SQL dentro do Spark para unir registros de uma tabela com dados obtidos de uma fonte em JSON
Para conhecer mais sobre o Spark SQL, possibilidades de integração e conexão, bem como alguns exemplos, acesse a documentação no site: <https://spark.apache.org/sql/>. Tente praticar.
O Python é uma das linguagens de programação mais populares para análise de dados e será utilizado ao longo desta seção como referência. Se você ainda não conhece a linguagem, recomendamos que você explore os seguintes endereços:
Python Data Science Handbook: <https://jakevdp.github.io/PythonDataScienceHandbook/>.
Pandas Tutorial: <https://bit.ly/3l3UJGu>.
Practice Python: <https://www.practicepython.org/>.
Como atividade prática é recomendável que nesse primeiro momento você realize a instalação e a configuração do Apache Spark: <https://spark.apache.org/downloads.html>. O processo de instalação é simples, no entanto, é necessário realizar algumas configurações adicionais que podem variar de acordo com o seu sistema operacional. Neste tutorial <https://bit.ly/32i42Ku>, você pode instalar e configurar o PySpark, que permite conectar o Python ao Spark. Certifique-se de ter instalado o Java e o Scala no seu computador. Caso não tenha instalado, siga os passos neste link: <https://bit.ly/3aJZbFu>. Por fim, se desejar algo mais completo e avançado, este tutorial pode ajudá-lo: <https://bit.ly/3aHnjbM>.
O Spark também contém um componente útil para processamento e análise de dados em tempo real - o Spark Streaming. Este componente possui uma sintaxe simples e unificada tanto para implementação em dados em tempo real como também para análise de dados históricos (dados em batch), ou seja, a maneira que você codifica para streaming é praticamente a mesma para batch. Com o Spark Streaming, os dados podem ser coletados de fontes, tais como: dados de bolsas de valores, redes sociais, sensores, dados pluviométricos, dispositivos de IoT (Internet das Coisas), entre outras. Embora esse tipo de análise (em tempo real) não exija grandes recursos de armazenamento, uma vez que o foco é a coleta, o processamento e a análise de microlotes de dados, é possível carregar os dados tanto em memória como em disco via HDFS. Neste último caso, é recomendável que você opte por essa alternativa quando os recursos de memória estiverem realmente escassos. Os motivos você já deve imaginar (conforme comentamos no início desta seção): o Spark processa os dados em memória, o que o torna mais veloz se comparado ao processamento em disco. A Figura 5 mostra um exemplo de implementação do Spark Streaming combinando com informações históricas.
Para conhecer mais sobre o Spark Streaming, possibilidades de integração, bem como alguns exemplos, acesse a documentação no site: <https://spark.apache.org/streaming/>.
Antes de ir para a atividade prática, você deve se certificar que o Spark esteja devidamente instalado na sua máquina. Recomendamos fortemente que você utilize como referência o tutorial da Apache para o Spark Streaming: <https://bit.ly/3aJpVG3>.
Outro componente do Spark que merece destaque é o Spark MLlib. Enquanto o Spark SQL e o Spark Streaming atuam mais próximos à origem (fontes de dados) coletando e processando dados, o Spark MLib converge para análise de Big Data ao implementar de forma eficiente diversos algoritmos de Machine Learning voltados para classificação, regressão e clusterização. Os algoritmos do Spark MLib foram projetados para executar em memória e responder rapidamente aos requisitos de computação iterativa. Assim podemos coletar dados de streaming do Twitter em um dado intervalo (janela) de tempo, aplicar algumas etapas de transformação e limpeza e carregar os dados no HFDS e assim utilizar os algoritmos do MLlib para realizar as análises desejadas. Cabe salientar que o armazenamento no HDFS é algo opcional. Por exemplo, para análises em tempo real, o armazenamento muitas vezes não é algo requerido e a análise é realizada logo após a etapa de transformação e limpeza dos dados e, após isso, os dados podem ser descartados, uma vez que a informação que chega, só é importante naquele momento. Em situações nas quais desejamos manter uma base histórica dos dados que estão fluindo pelo sistema, o armazenamento no HDFS pode ser uma alternativa. A Figura 6 mostra um exemplo prático de uso de um algoritmo que permite construir um modelo de Machine Learning utilizando o Spark MLlib.
FONTE: <https://spark.apache.org/mllib/>. Acesso em: 27 nov. 2018.
Para conhecer mais sobre o Spark MLlib, possibilidades de integração, conhecer os algoritmos e outras possibilidades de uso deste componente, acesse a documentação no site: <https://spark.apache.org/mllib/>.
Você pode utilizar como um guia de referência o tutorial do Spark MLlib <https://spark.apache.org/docs/latest/ml-guide.html>. Também recomendamos este blog <https://bit.ly/2EaIG9y>, que apresenta conteúdo e exemplos práticos relacionados ao MLlib, não perca a chance de praticar.
Por fim, o último componente que podemos citar é o Spark GraphX. Como o nome sugere, é uma estrutura que processa informações de grafos de forma eficiente. Então, conforme você aprendeu no Capítulo 2, a análise de Big Data pode se dar em forma de grafos, que são constituídos por um conjunto de vértices (atores) e arestas (relações). Em uma estrutura de rede social, considerar essa estrutura é importante para que possamos analisar e identificar qual o papel de um usuário na rede, referindo-se a sua importância ou relevância, seu grau de interação ou a força do relacionamento entre os usuários. A estrutura deste tipo de rede pode ser processada de forma eficiente e paralela por meio do Spark GraphX. A própria documentação destaca que este componente pode ser utilizado como ETL, para análise exploratória e computação dos grafos de forma iterativa e com uma eficiência superior a outras soluções do mercado. A Figura 7 demonstra um rascunho de implementação utilizando o Scala, observe que a sintaxe não difere muito em relação aos outros componentes que foram abordados.
FIGURA 7 – EXEMPLO DE UMA IMPLEMENTAÇÃO UTILIZANDO A API SCALA FORNECIDA PELO SPARK
FONTE: <https://spark.apache.org/graphx/>. Acesso em: 27 nov. 2018.
Este tutorial <https://bit.ly/3iXq8bG> apresenta um passo a passo de implementação do GraphX utilizando o PySpark. Além disso, para buscar informações mais completas e avançadas, você pode acessar o guia do próprio Spark GraphX: <https://bit.ly/3hfFibO>.
Todos esses componentes podem ser combinados em uma única solução e isso, evidentemente, varia conforme a sua necessidade. Por exemplo, talvez você precise coletar dados em tempo real do Facebook para prever a chance que um usuário ou grupo de usuários tem de romper amizade. Nesse caso, você pode utilizar o Spark Streaming para conectar a API desta rede social e começar a realizar a coleta. Em seguida, aplicar um algoritmo de Machine Learning com o Spark MLlib, tudo isso sob um rápido processamento de uma estrutura baseada em rede utilizando o GraphX. Assim, é importante ter em mente essas possibilidades para que, de fato, você seja capaz de usufruir amplamente da capacidade de processamento e análise do Apache Spark.
3.2 DEMAIS COMPONENTES DO APACHE SPARK
Processamento em Batch, Streaming, em grafos, manipulação de dados utilizando comandos SQL e análise preditiva (Machine Learning). Tudo isso em um ambiente distribuído, escalável, tolerante a falhas e extremamente veloz. Todos esses ingredientes tornam o Apache Spark uma das soluções de Big Data mais atrativas para desenvolvedores e empresas, mas o que torna o Spark tão poderoso?
De acordo com Zaharia et al. (2010), para que o Spark suporte computação iterativa, mantendo escalabilidade e tolerância a falhas, um dos componentes mais importantes está relacionado à construção de uma abstração conhecida como Resilient Distributed Datasets (RDDs) ou se preferir uma tradução literal - conjunto de dados resilientes e distribuídos. Estes mesmos autores definem o RDD como:
Uma coleção de objetos somente de leitura particionados através de um conjunto de máquinas que podem ser reconstruídas caso uma partição seja perdida. Os usuários podem armazenar em cache explicitamente um RDD na memória entre máquinas e reutilizá-lo em várias operações paralelas semelhantes a MapReduce. Os RDDs atingem a tolerância a falhas por meio de uma noção de linhagem: se uma partição de RDD foi perdida, o RDD terá informações suficientes a respeito de como ele foi derivado de outros RDDs para ser capaz de recriar apenas essa partição. Embora os RDDS não sejam uma abstração geral de memória compartilhada, eles representam um ponto ideal entre a expressividade por um lado e a escalabilidade e confiabilidade por outro (ZAHARIA et al., 2010, grifos nossos).
A resiliência de um RDD é uma característica que garante o controle de falhas que venham a ocorrer no sistema. Os dados em um RDD são persistidos em partições e distribuídos em diferentes nós em um cluster para que possam ser processados, posteriormente, de uma forma mais ágil. O Dataset é uma estrutura do RDD similar a uma tabela (por exemplo, de um Banco de Dados) que armazena dados de diferentes tipos.
Uma característica que define o RDD é a sua imutabilidade. Por exemplo, no momento em que você cria um RDD no Spark e em seguida aplica alguma operação de transformação, um novo RDD será criado, enquanto que as propriedades do RDD anterior permanecem intactas e por isso são consideradas imutáveis. Para criar uma RDD, é necessário que antes você defina um objeto para se conectar ao Spark e assim usufruir dos seus recursos, criando um Spark Context, que estabelece a conexão com o framework.
Para que você conheça mais e crie um Spark Context pelo PySpark, sugerimos que acesse este tutorial: <https://bit.ly/2ErKpqL>. Após a conexão, você pode criar uma RDD, acessando: <https://bit.ly/34jyciX>.
As RDDs suportam dois tipos de operações: as transformações e as ações. Quando aplicamos uma operação de transformação em um RDD, um outro RDD é criado. A etapa de transformação só é concluída quando uma operação de ação for realizada (Lazy Evaluation), que visa modificar seu conjunto de dados, conforme apresentado na Figura 8. O Spark Context é criado para permitir que a linguagem acesse os recursos do Spark. Após essa etapa é criado o primeiro RDD, que faz a leitura de um arquivo por intermédio do método textfile. O próximo passo é a criação da primeira transformação (método flatMap) sob o RDD anterior, consequentemente um novo RDD é criado e armazenado (val AllWords). Em seguida, uma outra etapa de transformação é executada neste RDD aplicando o método filter e resultando na criação de um novo RDD (val words) e assim sucessivamente.
FONTE: <https://jaceklaskowski.gitbooks.io>. Acesso em: 28 nov. 2018.
Apresentaremos a seguir um exemplo em Python para remoção de stopwords via Spark. Basicamente, o primeiro RDD faz a leitura de um arquivo com conteúdo textual. Em seguida, é definida uma lista com algumas stopwords da língua portuguesa. A terceira linha cria um novo RDD (second_rdd) a partir do RDD anterior (first_rdd) e aplica uma operação de transformação (utilizando o método filter). A expressão lambda é uma função anônima do Python, que basicamente retornará apenas um conjunto de registros nos quais não existam as stopwords definidas na linha anterior. A penúltima linha é uma operação de ação (método take) que recupera apenas os 20 primeiros registros do RDD (second_rdd). Caso você deseja guardar (persistir) essa informação na memória para posterior recuperação, você pode passar ao second_rdd o método cache, conforme mostra a última linha. Assim, é possível recuperar rapidamente a informação no cluster sem precisar executar novamente esta operação.
first_rdd = sc.textFile(“PATH”)
stopwords = [“e”, “o”, “de”, “para”, “um”, “uma”]
second_rdd = first_rdd.filter(lambda x: x not in stopwords)
second_rdd.take(20)
second_rdd.cache()
O Quadro 1 apresenta alguns dos métodos presentes nas operações de transformação e ação.
QUADRO 1 – LISTA DE ALGUMAS OPERAÇÕES DE TRANSFORMAÇÃO E AÇÃO
FONTE: <https://bit.ly/3ljU17c>. Acesso em: 27 nov. 2018.
Você pode consultar uma lista completa de métodos das operações de transformação e ação, assim como conhecer o significado de cada um por meio deste endereço: <https://bit.ly/2Yk6ejj>. Em se tratando de persistência dessas operações, é possível guardar essas informações não somente na memória, como também no disco. Consulte mais informações a respeito no endereço eletrônico sugerido.
Por outro lado, a ação visa aplicar uma operação que executa uma determinada transformação. Por exemplo, podemos aplicar um filtro (método filter) em um determinado termo presente em um arquivo de texto, o que gerará um novo RDD. Em seguida, aplicamos um método para executar uma operação de ação para contar o número de elementos presentes (método count) neste RDD, ou seja, a ação retorna o resultado (valor) propriamente dito. Este fluxo pode ser representado genericamente como mostra a Figura 9.
Para obter ganho de eficiência em suas aplicações Spark, pode ser que, em algumas atividades rotineiras em uma operação de ação, seja possível “cachear” (caching) essas informações, ou seja, guardar o resultado produzido por ela dentro da memória. Dessa maneira, quando precisarmos do resultado dessa ação, todo o processo de cálculo não precisará ser executado novamente.
O Apache Spark possui uma arquitetura robusta e transparente para o usuário. Se você desejar se aprofundar para conhecer mais a respeito dessa arquitetura, sugerimos que pesquise mais através deste endereço: <https://www.edureka.co/blog/spark-architecture/>.
3.3 CASES E APLICAÇÕES DO APACHE SPARK
As vantagens trazidas pelo framework, mostradas na seção anterior, incentivaram grandes empresas a fazerem uso do Apache Spark. A seguir, você conhecerá alguns cases, conforme apontado por Amster (2016):
Netflix: a empresa utiliza o Spark Streaming para obter insights de forma imediata (em tempo real) sobre como os usuários estão engajados em seu site. Dessa forma, a empresa tem a possibilidade de fornecer recomendações de filmes e/ou séries em tempo real.
Uber: o Uber também é uma outra grande empresa que utiliza o Spark Streaming para processar terabytes de eventos de seus usuários móveis combinando com o Apache Kafka e o HDFS para construir um pipeline de ETL de fluxo contínuo. Dessa forma, o Uber pode converter dados brutos não estruturados dos eventos em dados estruturados logo após a etapa de extração e assim realizar análises mais complexas.
Pinterest: por meio de um pipeline de ETL, o Pinterest pode aproveitar os benefícios do Spark Streaming para obter informações de seus usuários em tempo real ao identificar como os usuários estão interagindo com os Pins. A partir desses dados, a empresa pode fazer recomendações mais relevantes à medida que as pessoas vão navegando no site. Os Pins relacionados são úteis para que elas possam selecionar suas reais preferências no que tange a receitas, produtos ou planejamento de viagens para vários destinos.
Conviva: com aproximadamente 4 milhões de feeds de vídeo por mês (perdendo apenas para o Youtube), a Conviva utiliza o Spark para reduzir a rotatividade de seus clientes, otimizando fluxos e gerenciando o tráfego de vídeos em tempo real e, consequentemente, mantém uma experiência de visualização desejável e de alta qualidade.
Além desses casos de uso apresentados, o Apache Spark tem dado suporte a diversas aplicações. A página oficial do Spark apresenta algumas destas:
Apache Mahout: originalmente construído sob o Hadoop MapReduce, o Mahout foi readaptado e atualmente utiliza do Spark como backend para obter ganho de processamento.
Apache MRQL: utiliza o Spark para análise de dados distribuídos em larga escala, também para processamento e otimização de consultas.
Spindle: mecanismo de consulta de análise web que faz uso do Spark para otimização.
Thunderain: um framework que combina processamento streaming e batch (dados históricos) que pode ser pensado como uma arquitetura lambda.
Oryx: uma arquitetura lambda que mescla o Apache Spark e Apache Kafka para aprendizado de máquina em tempo real.
ADAM: um framework capaz de carregar, transformar e analisar dados genômicos (subárea da bioquímica que estuda o genoma de um organismo) utilizando o Spark.
Os casos de uso e aplicações apresentadas representam apenas uma pequena parcela de uma infinidade de aplicabilidades do Apache Spark. Tudo isso é explicado devido à grande capacidade de integração e facilidade de uso deste framework. Além disso, a abstração fornecida pelos seus componentes permite que executemos aplicações de forma transparente, tendo uma sensação de que estamos implementando ou codificando em uma única máquina, quando, na verdade, os dados estão sendo gerenciados, armazenados e distribuídos em diferentes nós do cluster. Não devemos considerar o Spark como uma solução oposta ou concorrente ao Hadoop. Ao contrário, o Spark surge como uma alternativa eficiente para processamento de grandes volumes de dados e, pode ser perfeitamente integrado ao Hadoop. Por exemplo, para dados massivos que superam a capacidade de armazenamento em memória, você pode integrar o HDFS a sua arquitetura de Big Data e usufruir do processamento veloz do Spark. Tudo dependerá das suas reais necessidades.
Você já ouviu falar de Internet das Coisas? Certamente que sim. No Capítulo 1 você viu como a Internet das Coisas afetará o mundo dos negócios, mas em que sentido? Como isso será de fato realizado? Nesta seção abordaremos com mais profundidade essas questões. Esperamos que faça um bom proveito. Bons estudos.
4.1 INTERNET DAS COISAS: CONCEITOS E VISÃO GERAL
Quando falamos de Internet sob uma perspectiva de geração de dados, associamos isso a computadores, ou melhor, pessoas produzindo e consumindo conteúdo a todo momento. Seja utilizando um dispositivo móvel, como celulares ou tablets, seja por uma máquina pessoal (PCs ou notebooks). Na era da “Internet dos Computadores”, os principais atores para propagação dos dados são os seres humanos. Por outro lado, na Internet das Coisas os principais atores são coisas que ora consomem, ora produzem dados. Isso permite que os computadores sejam capazes de obter informações e aprender a resolver problemas do mundo real a partir dos dados obtidos pelas coisas e assim eles serão capazes de sentir e reagir ao mundo real servindo de apoio para decisões humanas (QIN; SHENG, 2017).
Uma outra definição interessante de Internet das Coisas é apontada por Datameer (2015): uma rede física de objetos que está conectada e que pode ser acessada por intermédio da internet. Esses objetos conectados contêm uma tecnologia embutida, tais como sensores, que permitem que objetos percebam e se comuniquem. Esta capacidade é que mudará a maneira de como e onde as decisões são tomadas, quem as tomará e quão rapidamente elas serão decididas. Algo de relevante pode ser extraído a partir dessa definição. O termo objeto são as coisas que poderão ganhar “vida” ao perceber e se comunicar entre si dentro de um ambiente. Podemos imaginar um lar doméstico onde a geladeira se comunica com um dispositivo móvel alertando em tempo real sobre a ausência de algum produto. De fato, essa é uma tendência real. Ao longo dessa comunicação, imagine a quantidade massiva de dados trafegando o tempo todo e gerando informação com potencial relevância!
Em um cenário cada vez mais conectado, a tendência é que novos dispositivos passarão a gerar informações que podem ser úteis, não somente em um ambiente doméstico, mas também em ambientes externos, como nas próprias empresas. A Figura 10 evidencia o crescente número de dispositivos que serão conectados à internet. Os dados apontam que até 2020 serão cerca de 50,1 bilhões de dispositivos gerando informação. Para se ter uma ideia, em 2010 o número de dispositivos conectados era cerca de 10 vezes menor do que nos dias atuais.
Você pode conhecer alguns destes dispositivos navegando no menu deste site: <http://www.iotonlinestore.com/Home-Automation/9>. Além disso, a revista Época apontou algumas iniciativas de Startup oferecendo soluções em Internet das Coisas. Vale a pena conferir: <https://glo.bo/2Ec632G>.
Imagine quão interessante seria uma rede de supermercados saber informações de estoque de sua geladeira. A empresa, com base nessas informações, poderia coletar e analisar os dados aplicando algoritmos e assim tomar decisões mais assertivas ao compreender a real necessidade do cliente. Ainda, nesse caso, a empresa também poderia propor o lançamento de novos produtos ou promoções e enviar alertas ao consumidor.
Do ponto de vista interno, uma empresa de fabricação poderia monitorar seus equipamentos com a implantação de sensores na tentativa de prever e se antecipar a falhas, aplicando algoritmos de aprendizagem de máquina e tomando decisões, como solicitar um serviço de manutenção no momento adequado - o que economizaria custos com reparos mais complexos, ou, dependendo do problema, a substituição do equipamento. De fato, todo o pátio da empresa poderá ser monitorado, analisado e seus processos de produção otimizados. Alguns dos sensores que podem ser implantados seriam: sensores de iluminação, proximidade, temperatura, pressão, umidade, acelerômetro e assim por diante.
No entanto, qual o limite da nossa privacidade quando esses dispositivos começarem a ganhar de vez espaço em nossos lares? Nossa privacidade pode estar em risco se considerarmos a possibilidade de sermos “vigiados” por entidades/pessoas externas. Sem dúvida, essa é uma discussão que realmente está sendo levantada nos meios jornalísticos. Sugerimos que você tire um tempo para ler a respeito nesta matéria da Época, cujo tema é: Internet das Coisas impõe desafios de segurança, privacidade e conectividade: <https://glo.bo/3l67Sik>. Certamente você não encontrará dificuldades em encontrar outros materiais a respeito, haja vista que o tema faz parte de uma ampla discussão quando o assunto envolve a privacidade dos dados.
A Lei Geral de Proteção de Dados Pessoais foi sancionada no Brasil em 2018 e trouxe uma série de reportagens a respeito. Sem dúvida, isso representa um passo significativo que resguarda as informações dos cidadãos brasileiros. Observe algumas matérias:
Folha de São Paulo: <https://bit.ly/3aHSUdm>.
Senado Notícias: <https://bit.ly/3iZW1jN>.
G1 Notícias: <https://glo.bo/3aHMuLv>.
Para consultar a Lei Geral de Proteção de Dados na íntegra, acesse o link: <https://bit.ly/3hipdCn>.
Toda essa difusão de novos dispositivos que estão sendo conectados à internet gerando informação cria um ambiente propício para análise de Big Data. Perceba que uma crescente quantidade de fontes, gerando volumes de dados em um curto intervalo de tempo, impõe desafios cada vez maiores e um ambiente propício para o surgimento de novas tecnologias de Big Data. Estas, por sua vez, precisam dar conta do armazenamento e processamento dessas informações e entregar resultados para os negócios considerando diferentes níveis de granularidade, conforme as necessidades.
4.2 INTERNET DAS COISAS: SOLUÇÕES E APLICAÇÕES
A Internet das Coisas é constituída por um conjunto de objetos que estão interligados gerando massivamente informação. Contudo, é necessário que exista algum engine (mecanismo ou software que ofereça abstração) responsável por gerenciar toda essa gama de dispositivos, oferecendo segurança, escalabilidade, capacidade de processamento, entre outros adjetivos. Diante disso, existem algumas soluções no mercado que podem ser úteis para quem planeja analisar as informações desses dispositivos.
O Bridgera é uma plataforma robusta que se baseia em tecnologias de Big Data, responsável por gerenciar a conexão entre os dispositivos e aplicações de Internet das Coisas. O Bridgera tem como característica receber e enviar dados, assim como armazenar grandes volumes de dados e processá-los em tempo real. Essa plataforma utiliza como background tecnologias, como Apache NiFi, Apache Kafka e Apache Storm para ler e processar os dados que são ingeridos na plataforma e, dessa forma, consegue usufruir de todo o processo de tolerância a falhas e processamento distribuído por essas ferramentas de Big Data. O Bridgera fornece soluções flexíveis para trabalhar com grandes ou pequenos conjuntos de dados. Em circunstâncias nas quais você precise de grande capacidade de processamento, a plataforma fornece a flexibilidade necessária. Por exemplo, em situações nas quais a demanda decrescer, os recursos alocados para elevar o processamento são desativados (PASCUZZI, 2017).
Você pode ver um breve vídeo de demonstração da plataforma Bridgera a partir deste endereço: <https://bit.ly/2E4GErP>.
Outra solução que pode ser adotada em ambientes IoT é utilizar a nuvem da AWS. De acordo com a AWS, a plataforma garante a possibilidade de gerenciar bilhões de dispositivos e executar análises e aplicar algoritmos de Machine Learning de forma rápida, fácil e segura. Em seu portfólio, a AWS IoT oferece duas soluções: uma voltada para o ramo industrial (IIoT) - com monitoramento e controle de operações e outra para ambientes residenciais - com interconectividade e segurança. Você também pode integrar aos outros serviços da AWS para criar aplicações completas para Internet das Coisas. Os algoritmos de aprendizagem ajudam a realizar predições nos dispositivos e, assim, reagir antecipadamente a situações. Observe o esquema de funcionamento da AWS IoT na Figura 11. Na primeira etapa existe uma coleção de dispositivos, tais como sensores, lâmpadas, robôs etc., que estão conectados à nuvem e trocando mensagens. Os dados são armazenados para que você aplique análises e algoritmos de Machine Learning para extrair os devidos insights.
FONTE: <https://aws.amazon.com/pt/iot/>. Acesso em: 30 nov. 2018.
Em termos de aplicações, a Internet das Coisas pode ser utilizada em diversos domínios, inclusive: cidades inteligentes, agricultura, saúde e bem-estar, varejo inteligente e logística, conforme demonstrado por Simmhan e Perera (2016) e que será delineado a seguir:
Cidades inteligentes: há um grande interesse por parte de países em desenvolvimento e populosos de melhorar a qualidade e a sustentabilidade urbana. As cidades inteligentes implementam a Internet das Coisas através de um conjunto de dispositivos implantados nos mais diversos meios que as compõem, como transporte, energia e mobilidade. Por exemplo, o transporte inteligente pode monitorar as condições de tráfego em tempo real e tomar melhores decisões para otimizar o fluxo do trânsito. A administração do transporte público também poderá otimizar o cronograma de ônibus e trens de acordo com a demanda dos usuários.
Agricultura inteligente: a implantação de sensores em máquinas na agricultura permite rastrear condições climáticas (umidade, temperatura, luz solar) que afetam diretamente o solo e a produção. O monitoramento também pode ser realizado com dados de imagens de satélite, bem como modelos de previsão climática e cronograma de fornecimento de energia, a fim de planejar de forma inteligente a irrigação das culturas agrícolas.
Saúde e bem-estar: naturalmente, os esportes têm sido um dos casos de uso de aplicação de Internet das Coisas devido à rápida imersão de tecnologia. Sensores implantados nos jogadores permitem a extração de dados, como localização, velocidade e aceleração a partir de diferentes coordenadas (x, y, z). O fato de extrair dados detalhados de um jogador pode trazer benefícios reais, como uma maior segurança quanto a lesões sofridas durante o jogo ou questões relativas a seu desempenho. Além disso, existem equipamentos para monitoramento de saúde e estilo de vida, como relógios inteligentes. Estes podem rastrear o comportamento das pessoas e as métricas básicas de saúde. Em uma eventual discrepância, as pessoas recebem alertas. Sensores também podem auxiliar na medicação dos pacientes, observando doses compatíveis e apropriadas a cada um.
Varejo inteligente e logística: no varejo, a necessidade de rastrear a cadeia de suprimentos é importante - estoques, remessas e comportamento dos clientes nas lojas. Sensores RFID podem ser úteis, pois conseguem rastrear automaticamente os itens que entram e saem da loja, bem como sua localização. Na logística, os parâmetros velocidade e precisão são vitais. Por isso, o rastreamento inteligente de prateleiras e corredores pode ajudar a mapear o comportamento dos consumidores na tentativa de encontrar algum padrão.
Para finalizar este capítulo, reservamos uma seção para discutir algumas tendências para o Big Data nos próximos anos. É importante que você tenha em mente essas tendências e esteja preparado para lidar com novos cenários. A construção desta seção foi inspirada nas tendências de Big Data apontadas por Carillo (2018):
Crescimento do uso de Internet das Coisas: na seção anterior já havíamos comentado sobre a Internet das Coisas e as possibilidades de aplicação. De fato, parece que novos dispositivos inteligentes serão incorporados em nosso dia a dia. Os dispositivos móveis, como celulares e tablets, poderão controlar diversos equipamentos e objetos em um ambiente doméstico ou no nosso local de trabalho. Com base nisso, muitas empresas tenderão a lançar novos produtos e soluções voltados para atender à demanda “do mundo das coisas” em termos de infraestrutura (para atender à demanda de comunicação entre os dispositivos), hardware (dispositivos) e soluções comerciais (softwares). Apenas na saúde, diversas Startups têm surgido para realizar monitoramento em tempo real de pacientes para prevenção de doenças, conforme mostra a Figura 12.
Inteligência artificial mais acessível: uma tendência é a incorporação da inteligência artificial não somente nos grandes, como também nos pequenos negócios. Tarefas operacionais podem ser executadas e automatizadas por máquinas enquanto humanos tenderão a focar mais nas estratégias do negócio. Essa acessibilidade se dará de forma transparente para o usuário. No Capítulo 1, você viu um exemplo de que os nossos smartphones estão dotados de apps inteligentes que monitoram os nossos passos (como o próprio GPS), o que pode parecer uma tarefa simples e que já faz parte do nosso cotidiano. Entretanto, a incorporação de um mecanismo de IA poderá aprender a nossa rotina e fornecer sugestões úteis de rotas. Do mesmo modo, em pequenos negócios, apps inteligentes podem aprender a rotina ou o fluxo de trabalho da empresa e assim fornecer apoio aos processos da empresa.
O site da revista EXAME apresentou alguns exemplos de apps que podem ser úteis para pequenos negócios: O baixo custo (ou custo zero) desses apps é algo que pode ser atrativo para pequenos negócios que possuem um orçamento mais enxuto.
Análise preditiva mais presente: esse tópico não poderia ficar de fora. Como vimos no primeiro capítulo deste livro, as empresas têm encontrado real valor em análises preditivas e de fato isso será uma tendência acompanhada de uma perspectiva crescente do uso de IA nos negócios. Na realidade, a presença da análise preditiva também se dará de forma na qual usuários não especialistas terão a sua disposição métodos e processos de Machine Learning e poderão interagir com estes sem ter um conhecimento técnico aprofundado de implementação, o que, portanto, reduz a complexidade de utilização. Isso tem a ver com um conceito chamado de AutoML. Caso você queira conhecer mais, sugerimos que pesquise no link a seguir.
Você pode encontrar mais informações sobre AutoML diretamente em sua página oficial: <https://www.automl.org/automl/>. Além do conceito, são apresentados alguns exemplos e bibliotecas que implementam o AutoML, assim como outras informações pertinentes.
Migração de Dark Data para a nuvem: a nuvem poderá ser útil para armazenar dados que não foram explorados, mas que por questões de conformidade ou potencial de exploração permanecem em algumas empresas. Esses Dark Data (“dados escuros”) estão armazenados em anotações ou apresentações e são difíceis de explorar, mas que, se convertidos para um formato digital, podem ser úteis para futuras análises nas empresas.
Caso você ainda n
Caso você ainda não esteja familiarizado com o conceito de Dark Data, sugerimos este link: <https://bit.ly/3aKZAYn>.
Aumento da importância do CDO (Chief Data Officer): com uma cultura onde as decisões são cada vez mais orientadas a dados, o CDO terá maiores responsabilidades estratégicas nas empresas, assumindo papel central e crítico no apoio à tomada de decisões do negócio. A Figura 13 apresenta uma tendência no que se refere ao papel de um CDO nas empresas. Perceba que o CDO terá como maior parcela de responsabilidade (algo em torno de 90%) concentrar seus esforços em gerenciar os dados como um ativo na empresa, conduzir inovação e promover uma cultura orientada a dados.
Computação Quântica: com o crescimento das tecnologias e a incorporação de novos dispositivos impulsionando a Internet das Coisas, o volume de dados digital crescerá ainda mais nos próximos anos. Os computadores atuais não têm a capacidade para armazenar e processar de forma eficiente esse volume de dados. Os computadores quânticos podem agilizar sobremaneira o processo de análise e processament
Segurança cibernética mais inteligente e rigorosa: os escândalos do passado revelam uma grande preocupação com a segurança dos dados dentro da empresa. A tendência é que com o advento da Internet das Coisas e o aumento da complexidade da infraestrutura de rede, mais dados importantes possam ficar suscetíveis a ataques. A guerra cibernética ou mesmo comercial entre as empresas pode motivar roubos a dados. Assim, o Big Data pode ser útil para integrar uma estratégia para segurança cibernética ao utilizar, por exemplo, dados históricos de logs de segurança para prever possíveis ataques, ou monitorar dados em tempo real para identificar atividades suspeitas.
Soluções open-source em alta: as soluções open-source continuarão em alta nos próximos anos. Assim, profissionais que dominam ferramentas voltadas para o Big Data, tendem a ser valorizados. Na verdade, trabalhar com soluções open-source tem suas vantagens e desvantagens. Independente disso, existe um controle maior quando você constrói sua própria arquitetura e utiliza software de código aberto. Além disso, o que talvez seja mais atrativo para algumas empresas em apostar em soluções open-source é a possibilidade de poupar recursos e o fato de que as ferramentas, especialmente voltadas para o Big Data, têm se aprimorado cada vez mais, através de uma comunidade engajada que tem proposto melhorias contínuas para otimizá-las.
Edge Computing (Computação de “borda”): esse termo pode parecer novo para você. A ideia é processar dados na borda da rede (próximo à fonte de dados) e filtrar a quantidade de dados que chega na nuvem e, como consequência, agilizar o tempo de processamento do fluxo de dados, conforme ilustra a Figura 14. Os dados coletados a partir dos dispositivos são imediatamente analisados localmente, filtrados e, posteriormente, são entregues à nuvem. Isso implica melhoria no tráfego da rede, melhorando o processamento e filtrando dados que realmente sejam relevantes para a empresa.
Recomendamos que você se aprofunde mais em Edge Computing. Indicamos esse link da GE: <https://invent.ge/32b9ONN>, que não apenas mostra a definição como também compara com outros modelos (Fog e nuvem), exibe alguns exemplos e cita um case da própria GE utilizando essa abordagem nos seus negócios.
Chatbots mais inteligentes: parece que aqueles robôs de atendimento que observamos nos websites representam uma tendência para o futuro. Os chatbots estão sendo cada vez mais aprimorados e se tornando mais independentes. Quanto mais dados os bots possuírem, maior é a possibilidade de compreenderem a comunicação humana e assim oferecerem serviços mais personalizados, que realmente atendam às necessidades dos clientes.
Não há dúvida de que essas tendências apontadas por Carillo (2018) retratam em grande parte como as tecnologias conduzirão as decisões de negócios no futuro. É importante que você, como profissional, esteja preparado e possa acompanhar essas evoluções. A qualificação é essencial para que você esteja dentro de um mercado cada vez mais tecnológico e competitivo. Explore todas as sugestões aqui mencionadas, pesquise e pratique as atividades. Aliás, que tal praticar uma atividade antes do término desta seção?
Finalmente chegamos ao final de mais um capítulo de muito aprendizado. Na primeira seção você aprendeu sobre integração, especialmente com foco em ETL e suas limitações quanto à abordagem tradicional de BI. Conheceu o ELT e o Data Lake e como estes podem ser úteis para suas integrações em Big Data. Aliás, antes mesmo de terminar essa seção, mostramos a você possibilidades de integração via Hadoop e sugerimos alguns links úteis para você praticar e ficar mais confortável com os conceitos que foram apresentados.
Em seguida, foi reservada uma seção exclusiva para o Apache Spark, em que você conheceu conceitos importantes, bem como os componentes principais do Spark, cada um com suas particularidades, mas que também existe a possibilidade de integrá-los em uma situação prática. Você deve ter se habituado aos códigos que foram apresentados e experimentado alguns recursos que o Spark oferece em cada um desses componentes. Ao final, também apresentamos alguns casos de uso e aplicações do Spark.
Ainda em tópicos avançados, você aprendeu conceitos e aplicações de Internet da Coisas e percebeu que algumas empresas já propõem soluções de infraestrutura e software para quem deseja trabalhar com esse tipo de ambiente. As aplicações foram importantes para que você compreendesse a proporção de alcance da Internet das Coisas.
Por fim, finalizamos o capítulo mostrando a você as tendências de Big Data para que você se habitue, inclusive a novas abordagens que estão surgindo, especialmente em cenários de Internet das Coisas. Recorde sempre que a evolução dessas tecnologias impõe, muitas vezes, formas diferentes para lidar com o problema e, assim, precisamos ser profissionais flexíveis ou adaptáveis para aprender ou sugerir novas abordagens. As nossas decisões de análise impactam diretamente a eficácia da tomada de decisões. Ficamos felizes por você ter chegado até aqui. Desejamos sucesso na sua carreira profissional.
Bons estudos e até a próxima!
Para aprofundar nossos estudos escute este Podcast sobre um estudo de caso.
Foi muito bom contar com sua companhia durante nossa jornada do conhecimento. Agora, para recordar o conteúdo desta disciplina, escute este podcast.