빅데이터(백만송 데이터)를 분석하기 위해서 빅데이터는 클라우드 AWS S3에 저장하고, 이를 EC2에 설치한 스파크 클러스터를 통해 분석작업을 수행한다. 이를 위해서 다음과 같은 작업흐름을 갖출 수 있다.
config 팩키지를 통해 인증작업을 수행한다.AWS S3 저장소에 config 팩키지를 활용하여 인증설정을 한다. install.packages("config") 명령어로 config 팩키지를 설치하게 되면 config.yml 파일 내부에 환경설정에 필요한 정보를 담을 수가 있다.
config.xml파일을 만들어 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY를 지정한다. .gitignore에 config.xml파일을 등록시켜 GitHub 등 외부에 누출되지 않도록 특히 유의한다.
## config.xml
default:
aws:
AWS_ACCESS_KEY_ID: 'xxxxxxxxxxxxxE65Q'
AWS_SECRET_ACCESS_KEY: 'xxxxxxxxxxxxxxxxxxxxxxxxxxmBeV0'
AWS_DEFAULT_REGION: 'ap-northeast-2'bucketlist() 함수를 통해서 앞서 S3 접근 인증된 버킷에 접근할 수 있다. 특히, bucket_list_df() 함수는 데이터프레임으로 버킷 데이터를 변경시켜주기 때문에 dplyr 동사를 사용해서 다양한 후속 작업도 가능하다.
# devtools::install_github("cloudyr/aws.s3")
library(aws.s3)
# bucketlist()
bucket_list_df() %>%
filter(str_detect(Bucket, "tidyverse")) Bucket CreationDate
1 tidyverse-seoul 2019-01-18T03:30:50.000Z
Sys.setenv("AWS_ACCESS_KEY_ID" = aws$AWS_ACCESS_KEY_ID,
"AWS_SECRET_ACCESS_KEY" = aws$AWS_SECRET_ACCESS_KEY,
"AWS_DEFAULT_REGION" = "ap-northeast-2")
iris_df <- s3read_using(read.csv, object = "iris.csv", bucket = "tidyverse-seoul") %>%
tbl_df
iris_df# A tibble: 150 x 5
sepal_length sepal_width petal_length petal_width species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
7 4.6 3.4 1.4 0.3 setosa
8 5 3.4 1.5 0.2 setosa
9 4.4 2.9 1.4 0.2 setosa
10 4.9 3.1 1.5 0.1 setosa
# ... with 140 more rows
iris.csv 대신에 YearPredictionMSD.txt 약 500MB 데이터를 불러와 보자.
msong_df <- s3read_using(read.csv, object = "million_song/YearPredictionMSD.txt", bucket = "tidyverse-seoul") %>%
tbl_df
msong_df# A tibble: 515,344 x 91
X2001 X49.94357 X21.47114 X73.07750 X8.74861 X.17.40628 X.13.09905
<int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2001 48.7 18.4 70.3 12.9 -10.3 -24.8
2 2001 51.0 31.9 55.8 13.4 -6.58 -18.5
3 2001 48.2 -1.90 36.3 2.59 0.972 -26.2
4 2001 51.0 42.2 67.1 8.47 -15.9 -16.8
5 2001 50.5 0.316 92.4 22.4 -25.5 -19.0
6 2001 50.6 33.2 50.5 11.6 -27.2 -8.78
7 2001 48.3 8.98 75.2 24.0 -16.0 -14.1
8 2001 49.8 34.0 56.7 2.90 -2.92 -26.4
9 2007 45.2 46.3 -40.7 -2.48 1.21 -0.653
10 2008 39.1 -23.0 -36.2 1.68 -4.27 13.0
# ... with 515,334 more rows, and 84 more variables: X.25.01202 <dbl>,
# X.12.23257 <dbl>, X7.83089 <dbl>, X.2.46783 <dbl>, X3.32136 <dbl>,
# X.2.31521 <dbl>, X10.20556 <dbl>, X611.10913 <dbl>, X951.08960 <dbl>,
# X698.11428 <dbl>, X408.98485 <dbl>, X383.70912 <dbl>,
# X326.51512 <dbl>, X238.11327 <dbl>, X251.42414 <dbl>,
# X187.17351 <dbl>, X100.42652 <dbl>, X179.19498 <dbl>, X.8.41558 <dbl>,
# X.317.87038 <dbl>, X95.86266 <dbl>, X48.10259 <dbl>, X.95.66303 <dbl>,
# X.18.06215 <dbl>, X1.96984 <dbl>, X34.42438 <dbl>, X11.72670 <dbl>,
# X1.36790 <dbl>, X7.79444 <dbl>, X.0.36994 <dbl>, X.133.67852 <dbl>,
# X.83.26165 <dbl>, X.37.29765 <dbl>, X73.04667 <dbl>, X.37.36684 <dbl>,
# X.3.13853 <dbl>, X.24.21531 <dbl>, X.13.23066 <dbl>, X15.93809 <dbl>,
# X.18.60478 <dbl>, X82.15479 <dbl>, X240.57980 <dbl>, X.10.29407 <dbl>,
# X31.58431 <dbl>, X.25.38187 <dbl>, X.3.90772 <dbl>, X13.29258 <dbl>,
# X41.55060 <dbl>, X.7.26272 <dbl>, X.21.00863 <dbl>, X105.50848 <dbl>,
# X64.29856 <dbl>, X26.08481 <dbl>, X.44.59110 <dbl>, X.8.30657 <dbl>,
# X7.93706 <dbl>, X.10.73660 <dbl>, X.95.44766 <dbl>, X.82.03307 <dbl>,
# X.35.59194 <dbl>, X4.69525 <dbl>, X70.95626 <dbl>, X28.09139 <dbl>,
# X6.02015 <dbl>, X.37.13767 <dbl>, X.41.12450 <dbl>, X.8.40816 <dbl>,
# X7.19877 <dbl>, X.8.60176 <dbl>, X.5.90857 <dbl>, X.12.32437 <dbl>,
# X14.68734 <dbl>, X.54.32125 <dbl>, X40.14786 <dbl>, X13.01620 <dbl>,
# X.54.40548 <dbl>, X58.99367 <dbl>, X15.37344 <dbl>, X1.11144 <dbl>,
# X.23.08793 <dbl>, X68.40795 <dbl>, X.1.82223 <dbl>, X.27.46348 <dbl>,
# X2.26327 <dbl>