728x90
반응형

전체 글 206

스파크 튜토리얼 - (6) 데이터프레임

DataFrame DataFrame은 테이블처럼 구조화된 데이터로, 스키마를 표현할 수 있는 RDD의 확장 구조체입니다. python의 pandas나 SQL을 써본사람이라면, 이해가 빠를것입니다. Row DataFrame의 행을 Row라고 합니다.. Row들이 곧 하나의 레코드가 되고, Row들이 RDD를 내장함으로서, 효과적으로 데이터를 접근할 수 있게 해줍니다. 데이터 지난번 포스팅에서 사용했던 json데이터를 사용하겠습니다. 다운로드 링크는 아래에 있습니다. DataFrame 생성 데이터프레임은 크게 두가지 방법으로 생성할 수 있습니다. 스파크 세션을 통해 직접 생성 SQL컨텍스트의 테이블을 통해 생성 두가지 방법 모두 스파크 내부에서의 동작은 크게 다르지 않습니다. 각각의 방법을 살펴보도록 하겠습..

강화학습 공부 - (2) 동적계획법

동적 프로그래밍 (동적 계획법, Dynamic Programming) "동적" (Dynamic) 이라는 단어는 순차적이고, 일시적인 방면의 문제를 푸는것이라는 것을 의미한다. 이는 복잡한 문제를 푸는 방법론이다. 큰 문제를 서브 문제들로 분해한다. 그리고 그 서브 문제들을 다 풀어내면, 큰 문제를 풀 수 있다. 동적 프로그래밍으로 풀 수 있는 문제들은 두가지 특성을 가지고있다. 최적의 세부구조를 가지고있다. 최적의 세부 구조들을 풀어내면, 그로 인해 원래의 문제가 풀리는 구조이다. 최적의 해를 찾기 위해 세부 문제들로 분해해야 한다. 겹치는 세부 문제들이 존재한다. 세부 문제들이 반복되어 일어난다. 또한 그 세부 문제들을 캐시(저장)하고 재사용한다. 따라서 그 세부 문제들을 반복해서 풀어내면 효율적으로 ..

스파크 튜토리얼 - (5) 파일 로딩

파이썬 파일 로딩 Python은 여러 구조화된 파일을 로딩하는데 좋은 라이브러리들을 제공합니다. 이번 포스팅에서는 Python에서 json과 csv파일을 로딩하고, 그것들을 RDD에 로딩하는 방법을 알아보겠습니다. 예제에 사용할 파일 에제에서는 두개의 파일을 사용할 것입니다. json파일과 csv파일을 다운받아 사용하시기 바랍니다. json json파일은 구조화된 파일로, 주로 웹에서 데이터를 주고받을 때 쓰입니다. 파이썬에서 이 파일 포맷을 로딩할 때는 json패키지를 사용합니다. 다음은 rdd에서 텍스트 파일 형식으로 읽어온 뒤, 각 line의 json을 로딩하는 예제입니다. In [5]: import json inputJson = sc.textFile("./data/cars.json")\ .map(..

MySQL - (7) JOIN

MySQL 포스팅 (1) SELECT (2) 집계함수 (3) VIEW (4) 윈도우 함수 (5) 데이터 갱신 (6) 조건 분기 (7) JOIN JOIN Join이란 두개의 테이블을 합쳐 어떠한 결과물을 내는 작업입니다. 이때, 대개의 경우 컬럼명이 같은 컬럼을 기준으로 Join을 수행합니다. SQL에서 지원하는 Join의 종류는 다음과 같습니다. NATURAL JOIN INNER JOIN LEFT/RIGHT JOIN SELF JOIN 이번 포스팅에서는 NATURAL JOIN과 FULL JOIN, 그리고 INNER JOIN에 대해서 알아보겠습니다. 데이터 준비 JOIN을 하려면 (SELF JOIN을 제외하면) 테이블이 두개 이상 필요합니다. 먼저 Customer테이블 이외에 Orders테이블을 생성해주겠습..

서버 개발/MySQL 2019.08.10

MySQL - (6) 조건분기

MySQL 포스팅 (1) SELECT (2) 집계함수 (3) VIEW (4) 윈도우 함수 (5) 데이터 갱신 (6) 조건 분기 (7) JOIN 조건분기 모든 프로그래밍 언어에는 조건분기가 존재합니다. SQL에서 조건분기는 여러가지 방법이 있습니다. WHERE문 사용 UNION 사용 CASE 사용 WHERE문은 손쉽게 사용할 수 있다는 장점이 있지만, 구문이 매우 길어질 수 있습니다. UNION은 기본적으로 여러개의 SELECT문을 사용한다는 전제가 깔려있기 때문에 효율적이지 않습니다. 따라서, 이번 포스팅에서는 CASE문을 사용한 조건분기를 알아보도록 하겠습니다. CASE CASE식의 기본 문법은 다음과 같습니다. CASE WHEN 조건 THEN 식 WHEN 조건 THEN 식 ... ELSE 식 END ..

서버 개발/MySQL 2019.08.10

MySQL - (5) 데이터 갱신

MySQL 포스팅 (1) SELECT (2) 집계함수 (3) VIEW (4) 윈도우 함수 (5) 데이터 갱신 (6) 조건 분기 (7) JOIN 데이터 갱신 소프트웨어 개발을 하다보면 CRUD라는 말을 종종 듣게 됩니다. 이는 Create, Read, Update, Delete가 됩니다. SQL에서는 이가 곧 Insert, Select, Update, Delete가 됩니다. 이 중 Select를 제외하면 모두 데이터를 새로 주입하거나, 즉 갱신하려는 테이블 자체에 영향을 주는 트랜잭션 입니다. INSERT INSERT문의 기본적인 문법은 다음과 같습니다. INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ...) VALUES (값1, 값2, ...) 참고로 위에서 컬럼명은 테이블이 정의된 컬럼 순서와 ..

서버 개발/MySQL 2019.08.10

MySQL - (4) 윈도우 함수

MySQL 포스팅 (1) SELECT (2) 집계함수 (3) VIEW (4) 윈도우 함수 (5) 데이터 갱신 (6) 조건 분기 (7) JOIN SQL 집계함수 SQL에서는 집계함수를 많이 사용합니다. GROUP BY와 함께 COUNT, SUM 등을 많이 사용하게 됩니다. 집계의 예제를 다시 살펴보겠습니다. 다음은 GROUP BY와 COUNT를 사용해, 나라별 인원 집계를 내려본 것입니다. SELECT Country, COUNT(*) FROM customers GROUP BY Country; 위 쿼리의 실행 결과 중 상위 5개는 다음과 같습니다. 만약 데이터에 숫자인 컬럼이 있었다면, SUM이나 AVG도 사용해 볼 수 있을 것입니다. 윈도우 함수 윈도우 함수는 이 GROUP BY와 비슷하지만, 집계가 없는..

서버 개발/MySQL 2019.08.10

MySQL - (3) VIEW

MySQL 포스팅 (1) SELECT (2) 집계함수 (3) VIEW (4) 윈도우 함수 (5) 데이터 갱신 (6) 조건 분기 (7) JOIN VIEW SQL에서 VIEW란 SELECT문을 내장하는 가상 테이블을 만드는 것입니다. 실제 데이터를 저장하고 있는 것이 아니라, SELECT문을 저장하는 구조 입니다. VIEW를 만드는 기본 문법은 다음과 같습니다. CREATE VIEW 뷰이름 AS SELECT문 예제 지난번에 사용했던 데이터를 사용해 View를 만들어보도록 하겠습니다. 아래의 쿼리는 Customer데이터에서 이름과 나라를 골라 View를 만드는 예제입니다. CREATE VIEW NameAndCountry(cname, country) AS (SELECT CustomerName, country F..

서버 개발/MySQL 2019.08.09

스파크 튜토리얼 - (4) 페어 RDD

페어 RDD 페어 RDD란 key-value쌍으로 이루어진 RDD를 말합니다. 파이썬 에서는 Tuple로 이뤄진 RDD가 곧 페어 RDD가 됩니다. 페어 RDD 생성 먼저 간단하게 parallelize메소드를 사용해 int key-value페어로 이뤄진 페어RDD를 생성하겠습니다. In [46]: examplePairRDD = sc.parallelize([(1, 3), (1, 5), (2, 4), (3, 3), (4, 8), (4, 2), (3, 1)]) examplePairRDD Out[46]: ParallelCollectionRDD[77] at parallelize at PythonRDD.scala:194 페어 RDD 트랜스포메이션 페어 RDD는 기본 RDD에서 사용 가능한 메소드들은 모두 사용할 수..

MySQL - (2) 집계함수

MySQL 포스팅 (1) SELECT (2) 집계함수 (3) VIEW (4) 윈도우 함수 (5) 데이터 갱신 (6) 조건 분기 (7) JOIN 집계함수 모든 분석 언어들이 그렇듯, 기술통계적 집계 함수들이 존재합니다. 이번 포스팅에서는 MySQL에서 제공하는 기본 집계나 정렬 함수들을 알아보겠습니다. ORDER BY ORDER BY는 이름에서도 알 수 있듯이 정렬하는 함수 입니다. ORDER BY의 기본 문법은 다음과 같습니다. SELECT [컬럼명 ...] FROM 테이블명 ORDER BY 컴럼명 ASC|DESC; 테이블 전체의 레코드를 여러가지 방식으로 정렬해 보도록 하겠습니다. 다음은 id를 사용해 모든 레코드를 내림차순으로 정렬하는 쿼리 입니다. SELECT * FROM customers ORDE..

서버 개발/MySQL 2019.08.08
728x90
반응형