-
2020-08-12 오늘의 일지Dev/개발일지 2020. 8. 12. 17:48
aws의 s3에서 데이터를 받아와 Spark에서 이를 csv로 저장하는 프로토타입을 만들기로 했다.
구현 방향을 잡기 위해 일단 awssdk(v2)를 사용해 s3의 데이터를 작업용 랩탑에 저장하고,
저장된 데이터들을 Spark를 사용해 csv로 변환 후 저장하는 방향으로 두개로 나눠 구현했다.
1) s3 데이터 -> 로컬
데이터의 형식은 parquet이고, s3의 버킷 내에 폴더/년/월/일/parquet파일 구조로 이루어져 있었다.
AwsCredentials을 사용해 인증키들을 설정하고(accessKeyId, secretAccessKey)
S3Client Object를 빌드해 가져왔다.
(인증키가 이미 PC에 있다면 EnvironmentVariableCredentialsProvider.create()를 사용해 인증을
진행하는 것이 좋다)
region은 AP_NORTHEAST_2로 설정했다(서울!)
이후 bucket을 설정, ListObjectsV2Request의 prefix 설정 등을 통해 받아올 키 리스트에 제약을 두고
목록을 받아와서 바로 s3.getObject를 해 로컬 PC에 저장하는 방식으로 수행했다.
나중에 소스 코드를 약간 수정해 깃헙에 올리고 이를 설명하는 방식으로 자세하게 적을 예정.
2) parquet -> csv
원래는 모든 디렉토리 위치에 * 처리를 해서 자동으로 하고 싶었으나
요구사항에 "하루 하루의 결과 csv 파일을 확인할 수 있어야 한다"가 있어서
for loop를 사용해 read.parquet()-> select().coalesce(1).write하는 형식으로 구현했다.
scala로 구현
repartition과 coalesce의 차이는 여기에서 확인을...
https://brocess.tistory.com/183
남은 작업 : 저 두 구현된 내용을 하나로 합치기 + 정리하기
'Dev > 개발일지' 카테고리의 다른 글
2020-09-08 오늘의 일지 (0) 2020.09.08 2020-08-13 오늘의 일지 (0) 2020.08.13 2020-07-31 오늘의 일지 (0) 2020.07.31 2020.07.27 오늘의 일지 (0) 2020.07.27 2020.07.20 오늘의 일지 (0) 2020.07.20