본문 바로가기

분류 전체보기

(72)
[Spark] A급 💯 데이터 엔지니어를 위한 Aggregations & Joins spark에서의 aggregation은 built-in functions으로 주로 쓰임.기본으로 아래 코드 필수임.from pyspark.sql import functions as f Aggregating Dataframes and Windows Functions아래와 같이, df의 sql like 방법 혹은 sqlexpr로 sql을 직접 갖다쓰는, 두가지의 방식이 모두 가능함. group by 도 마찬가지. sql을 갖다 쓸수도 있고, 아닐수도 있지만, 직접 갖다 안 쓸 이유를 모르겠음.  예를 들어 아래와 같은 결과물을 내고 싶다고 치자. Country와 WeekNumber를 composite key columns로 한다. 이를 SQL이 아닌 방식으로 처리하면 아래와 같은 코드가 나옴. 그러나 만약,..
[Spark] Spark의 꽃🌺, Transformations 기본적으로 spark는 데이터를 처리하기 위한 툴인만큼, 데이터 처리는 가장 핵심적인 요소. spark에서의 데이터 처리는 위의 항목들 정도로 정리할 수 있음.  Play with Dataframe Row 1 수동으로 row 및 dataframe 만들기예를 들어, 날짜 칸이 모두 date이 아닌 string 형태로 되어있는 녀석에 대한 conversion을 하는 함수를 만들때 쓰임.  2 driver에 dataframe row 모으기 위의 과정을 유닛 테스트로 발전시키고 싶다고 치자. 이때, 기본적으로 dataframe은 병렬화를 위해 많은 노드들에 분산 저장되어있기 때문에, 이따금씩 관련한 전체 데이터를 가지고 뭔가 처리가 필요할 때가 있다. 이때는 각 노드의 관련 데이터들을 모두 뭉쳐야 하기 때문에 ..
[Spark] Spark의 매우 도움되는 API 친구들 Spark 위에서 우리가 활용할 수 있는 녀석들은 RDD, Spark SQL, DataFrame, DataSet스파크가 처음 등장했을 때 분산처리를 위해 등장한 것이 RDD. 기본적인 동작은 되지만, 최적화도 직접 해줘야 하고, 암튼 오래된 냄새가 많이 남. 이후 Catalyst Optimizer라는 최적화 엔진이 등장하면서, 이 엔진의 최적화 대상이 아닌 RDD는 자연스레 사장되고, 그 대상인 Spark SQL, DataFrame, DataSet 이 각광 받음. 지금은 그 중에서도, 좀 쉬운 것들은 Spark SQL, 좀 어려운 건 DataFrame API로 어지간하면 다 처리하는 방식. 다만 이제 아무래도 DataFrame의 최적화가 테이블 형식의 데이터에만 적용되므로, 반정형, 비정형 데이터를 다룰..
[Spark] 본격적인 프로그래밍 on spark 🧑‍💻 PyCharm을 활용할 것. 처음에 PySpark, PyTest 라이브러리도 설치를 해준 채로 시작해야 함.  Application Logs Log4JLog4J를 활용해보자. Log4J란? 로깅 프레임워크인데, Apache에서 만든 거라 spark랑 잘 맞으므로 저걸 자주 같이 씀. 각종 configuration 있는데, 일회성의 것들이므로 skip forward...spark session의 configuration은 4가지가 있는데, 개발자로써 사용하는 건 보통 SparkConf나 spark-submit CLI 이렇게 두개임. 나중에 필요하면 그때 더 깊게 공부하면 됨.  Spark Session에 대하여* Driver가 곧 Spark Session이라고 일단은 이해하자.기본적으로 스파크 프로그램을 ..
[Spark] 스파크 실행 모델과 구조 Spark가 특정한 데이터를 받아서 처리하게끔 하는 부분이 1번 부분이고, 이게 사실 가장 중요하고, 앞으로도 이 부분을 위주로 다룰 것이다. 그 전에, 다 만든 Spark 프로그램이 batch든 streaming이든 그 사이에 포함이 된다고 하면 어떻게 실행하는지를 알아보면,일반적으로 단위 테스트 등 코드를 작성할 때는 interactive clients를 활용하지만, 다 끝나고 나면 submit을 해야 하는데 그 방법이 여러개 있다. 우선 가장 보편적으로 쓰이는 게 spark-submit이지만, databricks notebook을 이용해서 개발했다면 databricks가 제공하는 submit이 있기도 하고, 그리고 서로 다른 플랫폼에서 제공하는 RestAPI도 있음. 막론하고 보편적으로 쓰이는 것은..
[Spark] Spark에서의 쌍두마차, Table 과 Data Frames Spark 에서 일반적으로 데이터를 다루는 방식은 두가지로 나뉜다. 1 Spark Table - SQL우리가 일반적으로 알고 있는 RDBMS의 개념이 spark에서의 table이라고 생각하면 됨. 스키마는 meta store에 저장.이미 정리된 스키마를 틀로 하고, 테이블 형태로 어떤 저장소에 저장이 되는, 그런 table. 당연히 structured만 받음. 2 Spark Data Frame - DF APIs반면 후자, 그러니까 Data Frame은 동작 방식 자체가 다르다. Run time에 생성되고, 프로그램 종료와 함께 끝남.당연히 스키마를 관리하는 catalog (meta store가 아님)도 run time에 정립이 되었다가 끝나면 날아감.스키마도 run time 시에, 대상이 되는 데이터 셋..
[Spark] Spark @ Databricks Cloud 기본 기본적으로 Spark를 활용하려면 Cloud 혹은 on-premise 형태의 두 가지 중 골라야 함.  Databricks Cloud - community ver Databricks Cloud를 활용하기 위해 내 이메일로 계정 생성, community version을 체험하기로 함. 아래의 IDE.  Databricks의 notebook은 그냥 python 코드 작성하는 IDE임. 거기에 코드를 작성하고 실행하면, 실행이 되는데, 실행이라고 하면 2가지가 자세히 필요함. CPU와 스토리지.  1 CPU 왼쪽의 compute 섹션에서 확인가능함. 들어가서 클러스터를 만들어주면 됨. 런타임은 최신 spark 버전으로 지정해줌.  2 Storage 그냥 기본으로 databricks에서 소정의 free-stor..
[Spark] 빅데이터와 데이터 레이크 - Hadoop 변천사 데이터 엔지니어링의 변천사기본적으로 1959년, COBOL의 등장이 처음으로 데이터를 처리하는 것에 대한 진지한 결과물로 등장.이후 1977년, Oracle이 RDBMS를 만들며 COBOL을 계승, 대체함.그리고 오랫동안 structured data만을 저장할 수 있어도 전혀 문제가 없었음. 그러나,  Variety어느 시점, JSON, XML과 같은 semi-structured data들이 등장했고, RDBMS가 담기 어려워졌음.심지어는 text, pdf 등의 un-structured data까지 등장을 해버렸음.  Volume, Velocity이전과는 비교도 안될 정도의 큰 규모의 데이터들을, 빠르게 다뤄야 하는 시간이 왔음. 이렇게 3V의 성질을 가진, 소위 빅데이터 가 등장하면서, RDBMS만으로..