-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLista_2.Rmd
109 lines (81 loc) · 4.32 KB
/
Lista_2.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
---
title: ''
subtitle: ""
author: ""
date: ""
output:
pdf_document:
fig_crop: false
highlight: tango
number_sections: false
fig_caption: true
keep_tex: true
includes:
in_header: Estilo.sty
classoption: a4paper
always_allow_html: true
---
\begin{center}
{\Large
DEPARTAMENTO DE ESTATÍSTICA} \\
\vspace{0.5cm}
\begin{figure}[!t]
\centering
\includegraphics[width=9cm, keepaspectratio]{logo-UnB.eps}
\end{figure}
\vskip 1em
{\large
24 de dezembro de 2022 (Feliz Natal!)}
\vskip 3em
{\LARGE
\textbf{Lista 2: Manipulação em Bancos de dados e em Spark com R}} \\
\vskip 1em
{\Large
Computação em Estatística para dados e cálculos massivos} \\
\vskip 1em
{\Large
Tópicos especiais em Estatística 1} \\
\vskip 3em
{\Large
Prof. Guilherme Rodrigues} \\
\vskip 1em
{\Large
César Augusto Fernandes Galvão (aluno colaborador)} \\
\vskip 1em
{\Large
Gabriel Jose dos Reis Carvalho (aluno colaborador)} \\
\end{center}
\vskip 5em
<!-- [label={(\Alph*)}] -->
\begin{enumerate}
\item \textbf{As questões deverão ser respondidas em um único relatório \emph{PDF} ou \emph{html}, produzido usando as funcionalidades do \emph{Rmarkdown} ou outra ferramenta equivalente}.
\item \textbf{O aluno poderá consultar materiais relevantes disponíveis na internet, tais como livros, \emph{blogs} e artigos}.
\item \textbf{O trabalho é individual. Suspeitas de plágio e compartilhamento de soluções serão tratadas com rigor.}
\item \textbf{Os códigos \emph{R} utilizados devem ser disponibilizados na integra, seja no corpo do texto ou como anexo.}
\item \textbf{O aluno deverá enviar o trabalho até a data especificada na plataforma Microsoft Teams.}
\item \textbf{O trabalho será avaliado considerando o nível de qualidade do relatório, o que inclui a precisão das respostas, a pertinência das soluções encontradas, a formatação adotada, dentre outros aspectos correlatos.}
\item \textbf{Escreva seu código com esmero, evitando operações redundantes, visando eficiência computacional, otimizando o uso de memória, comentando os resultados e usando as melhores práticas em programação.}
\end{enumerate}
```{r setup, results = FALSE, message = FALSE, echo=FALSE}
knitr::opts_chunk$set(echo = TRUE, warnings = F)
# carregando os pacotes necessários
if (!require("pacman")) install.packages("pacman")
p_load(tidyverse, rmdformats, stringr, vroom, dtplyr, data.table, rvest, microbenchmark)
```
\newpage
Por vezes, mesmo fazendo seleção de colunas e filtragem de linhas, o tamanho final da tabela extrapola o espaço disponível na memória RAM. Nesses casos, precisamos realizar as operações de manipulação *fora* do `R`, em um banco de dados ou em um sistema de armazenamento distribuído. Outas vezes, os dados já estão armazenados em algum servidor/cluster e queremos carregar para o `R` parte dele, possivelmente após algumas manipulações.
Nessa lista repetiremos parte do que fizemos na Lista 1. Se desejar, use o gabarito da Lista 1 em substituição à sua própria solução dos respectivos itens.
## Questão 1: Criando bancos de dados.
<!-- **a)** Crie um banco de dados SQLite e adicione a tabela gerada no item 1e) da Lista 1. -->
**a)** Crie um banco de dados SQLite e adicione as tabelas consideradas no item 2a) da Lista 1.
<!-- \textcolor{red}{\bf Solução} -->
**b)** Refaça as operações descritas no item 2b) da Lista 1 executando códigos sql diretamente no banco de dados criado no item **a)**. Ao final, importe a tabela resultante para `R`. Não é necessário descrever novamente o que são as regiões de saúde.
<!-- \textcolor{red}{\bf Solução} -->
**Atenção**: **Pesquise e elabore os comandos sql sem usar a ferramenta de tradução de dplyr para sql**.
**c)** Refaça os itens a) e b), agora com um banco de dados MongoDB.
<!-- \textcolor{red}{\bf Solução} -->
**d)** Refaça os itens c), agora usando o Apache Spark.
<!-- \textcolor{red}{\bf Solução} -->
**e)** Compare o tempo de processamento das 3 abordagens (SQLite, MongoDB e Spark), desde o envio do comando sql até o recebimento dos resultados no `R`. Comente os resultados incluindo na análise os resultados obtidos no item 2d) da Lista 1.
**Cuidado**: A performance pode ser completamente diferente em outros cenários (com outras operações, diferentes tamanhos de tabelas, entre outros aspectos).
<!-- \textcolor{red}{\bf Solução} -->