빅데이터(백만송 데이터)를 분석하기 위해서 빅데이터는 클라우드 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>