프로젝트에서 발생했던 오류 정리이번 데브코스에서 프로젝트를 진행하면서 발생했던 오류와 해결 과정을 정리해보려고 한다. 나는 Airflow의 DAG를 작성하는 역할을 맡았기에 데이터를 S3, Redshift에 저장하는 과정에서 에러를 마주치게 되었다.S3에 저장한 csv 열었을 때 한글 깨짐문제 발생API를 통해 데이터를 가져와 데이터 프레임 형태로 만들고, S3에 csv로 저장해 주었다. 에러가 발생하지 않아서 올바르게 작동하나 싶었지만, aws 웹 콘솔로 접속해서 S3의 파일을 직접 열었을 때 한글이 깨지는 것을 확인할 수 있었다. 영어와 숫자는 제대로 나오기 때문에 인코딩-디코딩 과정에서 오류가 있을 것이라 생각했다.문제 해결결론적으로 구글링을 많이 해봤지만, S3의 파일을 다운로드하고 열었을 때 한..
Spark 내부동작Spark 파일 포맷작업에 맞는 파일 최적화 필요Unstructured (비구조화) : TextSemi-structured (반구조화) : json, xml, csvStructured (구조화) : parquet, avro, orc, sequencefileSpark의 주요 파일 포맷Splittable : HDFS 데이터 블록의 Partition으로 바로 올라갈 수 있는지 여부Human readable : 사람이 읽을 수 있는지 여부Nested structure support : subfield를 지원하는지 여부Schema evolution : 스키마가 다른 데이터끼리 사용 가능한지 여부ParquetSpark의 기본 파일 포맷Hybrid Storage 방식하나의 데이터 블록은 하나의 Ro..
Spark 프로그래밍 : SQLSpark SQL 소개Spark SQL과 Spark DataFrame의 차이점과 Spark SQL의 사용법을 알아보자.SQL의 중요성데이터 분야의 필수적인 기본 기술구조화된 데이터를 다룬다면, SQL은 데이터 규모와 관계없이 쓰임모든 대용량 DW는 SQL 기반 : Redshift, Snowflake, BigQuery, Hive/PrestoSpark도 Spark SQL 지원Spark SQL구조화된 데이터 처리를 위한 Spark 모듈데이터 프레임 작업을 SQL로 처리 가능데이터 프레임이 테이블 이름 지정 후 sql 함수 사용 가능HQL(Hive Query Language)과 호환 가능Spark SQL vs DataFrameSQL로 가능한 작업이라면 DataFrame을 사용할 이..
Spark 프로그래밍 : DataFrameSpark 데이터 처리Spark 데이터 시스템 아키텍처데이터 병렬처리데이터 분산하둡 맵의 데이터 처리 단위는 디스크에 있는 데이터 블록 (128MB)Spark에서는 이를 파티션 (Partition)이라 부름, 파티션의 기본 크기도 128MB나눠진 데이터를 동시 처리MapReduce에서 N개의 데이터 블록으로 구성된 파일 처리 시 N개의 Map 태스크 실행Spark에서는 파티션 단위로 메모리에 로드되어 Executor 배정데이터 분산 -> 파티셔닝 -> 병렬 처리Executor는 할당된 CPU 수만큼의 태스크 처리 가능적절한 파티션 개수 = Execution 개수 * Execution 당 CPU 수Spark 데이터 처리 흐름데이터 프레임은 작은 파티션들로 구성되며,..