실습 3. 텍스트를 파싱해서 구조화된 데이터로 변환하기 Regex를 이용해서 아래와 같이 변환하는 것이 목표 입력 "On 2021-01-04 the cost per ton from 85001 to 85002 is $28.32 at ABC Hauling" regex 패턴 : "On (\S+) the cost per ton from (\d+) to (\d+) is (\S+) at (.*)" \S (non-whitespace character), \d(numeric character) 출력 (1) Spark Session build from pyspark.sql import SparkSession from pyspark import SparkConf conf = SparkConf() conf.set("spar..
실습 2. 헤더가 없는 CSV 파일 처리하기 입력 데이터 : 헤더 없는 CSV 파일 데이터에 스키마 지정하기 cust_id, item_id, amount_spent를 데이터 컬럼으로 추가하기(모두 숫자) cust_id를 기준으로 amount_spent의 합을 계산하기 1) schema 생성 from pyspark.sql import SparkSession from pyspark.sql import functions as func from pyspark.sql.types import StructType, StructField, StringType, FloatType schema = StructType([ \ StructField("cust_id", StringType(), True), \ StructFie..
실습 1. 헤더가 없는 CSV 파일 처리하기 입력 데이터 : 헤더가 없는 CSV 파일 데이터에 스키마 지정하기 SparkConf 사용해보기 measure_type 값이 TMIN인 레코드 대상으로 stationId별 최소 온도 찾기 1) Spark로 CSV 로드(SparkSession, conf, Schema 지정) from pyspark.sql import SparkSession from pyspark import SparkConf # SparkConf로 SparkSession의 환경 설정 conf = SparkConf() # application의 이름 conf.set("spark.app.name", "PySpark DataFrame #1") # master 설정, local 모든 스레드를 가져오겠다 ..
윈도우 10+ 기반 JDK11과 파이썬 3.8 혹은 그 이상을 설치 java -version python --version SPARK 3.0 설치 1. C드라이브의 루트 밑에 Spark, Hadoop이라는 폴더를 생성한다. Spark: C:\Spark Hadoop: C:\Hadoop 2. 아래 링크 방문 후 가장 최신 버전을 다운로드. 다운로드 파일을 Spark 폴더에서 압축 풀기 https://spark.apache.org/downloads.html Downloads | Apache Spark Download Apache Spark™ Choose a Spark release: Choose a package type: Download Spark: Verify this release using the an..
Spark 개발환경 옵션 Local Standalone Spark + Spark Shell Python IDE - Pycharm, Visual Studio Databricks Cloud - 커뮤니티 에디션을 무료로 사용 다른 노트북 - 주피터 노트북, 구글 Colab, 아나콘다 등 Local Standalone Spark Spark Cluster Manager로 local[n] 지정 master를 local[n]으로 지정 master는 클러스터 매니저를 지정하는데 사용 주로 개발이나 간단한 테스트 용도 하나의 JVM에서 모든 프로세스를 실행 하나의 Driver와 하나의 Executor가 실행됨 1 + 쓰레드가 Executor안에서 실행됨 Executor안에 생성되는 쓰레드 수 local : 하나의 쓰레드..
https://school.programmers.co.kr/learn/courses/30/lessons/144855 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] -- 코드를 입력하세요 SELECT CATEGORY, SUM(BS.SALES) AS TOTAL_SALES FROM BOOK AS B INNER JOIN BOOK_SALES AS BS ON B.BOOK_ID = BS.BOOK_ID AND BS.SALES_DATE LIKE '2022-01%' GROUP BY B.CATEGORY ORDER BY CATEGORY 다시 한번 등장한 JOIN 전에..
https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] def solution(numbers, target): global answer answer = 0 def DFS(L, sum): global answer if L == len(numbers): if sum == target: answer += 1 else: DFS(L + 1, sum + numbers[L]) DFS(L + 1, sum - numbers[L]) DFS(0, 0) retur..
https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net [풀이] import sys from collections import deque while True: data = input() cnt = 0 if data == '.': break stack = deque() for i in data: if i in ['(', '[']: stack.append(i) if i in [')', ']']: cnt += 1 if len(stack..
https://school.programmers.co.kr/learn/courses/30/lessons/133026 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDER FROM FIRST_HALF AS F INNER JOIN ICECREAM_INFO AS I ON F.FLAVOR = I.FLAVOR GROUP BY I.INGREDIENT_TYPE; ICECREAM_INFO와 INNER JOIN을 한 후, INGREDIENT_TYPE으로 GROUP BY합..
https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] # deque로 구현 # queue를 bridge_length만큼 만든 뒤 # queue의 총합이 weight보다 낮을 경우 # truck_weights를 하나씩 다리 위로 올린다(queue에 올린다) # 올라갔을 때는 항상 하나씩 작아지면서 맨 뒤에껄 0으로 업데이트해야함 # popleft를 하고, 뒤에 append로 쌓아야함 # 하지만 popleft할 때 append는 항상 0으로만 ..