Python(61)
-
[Spark] 분산/병렬 처리할 때 주의할 점
앞 포스팅에서 언급했듯이, Spark는 분산/병렬 처리를 지원한다. 하지만 분산/병렬 처리가 된다고 마냥 믿고 쓰기만 해서는 안된다. 분산/병렬 처리의 성능을 올리고, 비용을 줄이기 위해선 생각해줘야 할 것들이 몇몇 있다. 지금부터 그 요소들을 살펴보고 어떻게 코딩해야 할지 방향을 짚어보자. Distributed Data-Parallel 먼저 Spark의 핵심인 'Distributed Data-Parallel'에 대해서 알아보자. 분산된 환경에서의 병렬 처리란? 1) 데이터를 여러 개로 나누어 여러 노드로 보낸다. 2) 각 노드에서 독립적으로 task를 시행. 3) 각자 만든 결괏값을 합친다. 이 일련의 과정이 분산된 환경에서의 병렬 처리이며, 그림으로 표현하면 다음과 같다. Spark를 처음 접한다면,..
2022.05.01 -
[선형대수학] 평면 사이의 거리 구하기
평면 사이의 거리는 어떻게 구할 수 있을까? 겉으로 보기엔 어려워 보일 수 있지만, 이전 포스팅에서 설명한 점과 평면 사이의 거리 구하는 방법만 알면 손쉽게 구할 수 있다. [이전 포스팅 URL: https://mengu.tistory.com/15?category=930054] [선형대수학] 점과 평면 사이의 거리 점과 평면 사이의 거리는 어떻게 구할 수 있을까? 물론, 여기서 거리는 최소 거리를 말한다. 그림 그리고 공식 유도해보자. 1. 그림 그리기 벡터 Q, 벡터 P는 위치 벡터다. Q는 점을 가리키며, P는 mengu.tistory.com 한 평면 위에 있는 점의 좌표를 알아내고, 좌표를 점과 평면 사이의 거리 구하는 공식에 대입하면 된다. 하지만 문제 출제자가 문제를 그렇게 간단하게 낼 리도 없..
2022.04.25 -
[자료구조] 큐(Queue) 개념 및 코드 구현
이번 포스팅에선 큐(Queue)의 개념과 코드 구현을 할 것이다. 만약 스택(Stack) 개념을 알지 못한다면 이전 포스팅을 보고 오자. [이전 포스팅 URL: https://mengu.tistory.com/29] [자료구조] 스택(Stack) 개념 및 코드 구현 자료구조 중 하나인 스택(Stack)에 대해 알아보고, 직접 코드로 구현해보자. 배열 구현과 연결 리스트 구현 모두 해볼 것이다. 들어가자. 스택(Stack) 개념 가장 나중에 넣은 데이터를 가장 먼저 빼 mengu.tistory.com 들어가보자! 큐(Queue) 개념 큐(Queue)는 FIFO(First In First Out) 방식의 자료구조이다. 먼저 들어온 요소가 가장 먼저 나간다. 큐(Queue)의 제일 앞 요소를 front, 제일 ..
2022.04.24 -
[자료구조] 스택(Stack) 개념 및 코드 구현
자료구조 중 하나인 스택(Stack)에 대해 알아보고, 직접 코드로 구현해보자. 배열 구현과 연결 리스트 구현 모두 해볼 것이다. 들어가자. 스택(Stack) 개념 가장 나중에 넣은 데이터를 가장 먼저 빼내는 데이터 구조. LIFO(Last In First Out) 방식. 스택의 가장 위 요소를 Top이라 한다. 활용 재귀적으로 함수를 호출해야 하는 작업에서, 임시 데이터를 스택에 쌓아두고 이전 단계로 돌아갈 때 데이터를 다시 꺼내오는 등으로 쓰인다. 기능 1. push() : 스택의 원소를 추가한다. 2. top() : 스택의 가장 위 원소를 가져온다. 3. pop() : 스택의 가장 위 원소를 뽑아낸다. 4. isEmpty() : 스택의 empty 여부를 확인한다. 스택(Stack) 구현 배열 구현 ..
2022.04.24 -
[Spark] RDD 개념 및 코드
RDD(Resilient Distributed Dataset)란? 직역하면 탄력적인 분산 데이터셋이다. 말 그대로 데이터를 클러스터에 분산하여 저장하며, 그런 데이터를 탄력적으로 이용(이슈 발생 시 과거 데이터로 돌아가기 등)할 수 있게 하는 데이터셋이다. 지금부터 RDD의 특징을 톺아보자. 1. 데이터의 분산 RDD는 다음과 같이 데이터를 여러 클러스터에 분산 저장하는 방식이다. 하지만 여러 클러스터에 흩어져있어도 하나의 파일처럼 사용하는 것이 가능하다. # 패키지를 가져오고 from pyspark import SparkConf, SparkContext import pandas as pd # Spark 설정 conf = SparkConf().setMaster("local").setAppName("ube..
2022.04.24 -
[Spark] Apache Spark 개념 및 버전
Apache Spark에 대해 알아보자. Apache Spark란 빅데이터 처리를 위한 오픈소스 엔진(고속 분산처리)이다. 이미 아마존, 우버, 넷플릭스 등 다양한 기업에서 쓰이고 있다. Apache Spark 등장 배경 데이터가 쏟아지면서 3가지 문제를 맞이한다. 1. 데이터의 크기가 기하급수적으로 증가한다. 2. 데이터가 생성되는 속도가 어마어마하게 증가했다. 3. 데이터의 종류도 증가했다. 물론 데이터를 통해 인사이트를 얻고자 하는 사람 입장에선 좋을 수도 있다. 하지만 분석 전에 데이터를 처리하고 저장해야 하는 입장에선 문제가 아닐 수 없다. 데이터 크기가 증가하면 저장 비용이 증가하고, 생성되는 속도가 증가하면 저장하는 속도가 따라잡지 못해 알맞게 처리할 시간을 확보하지 못한다. 종류가 증가하면..
2022.04.23