프로그래밍/Spark 14

pyspark mysql 연동 (feat.docker)

책을 공부하며 spark와 mysql을 연동시키는 방법에 대해서 실습하려고 했다. 하지만 내 mac에 라이브러리, 버전 등이 너무 꼬여버려서 차라리 이럴 거면 docker로 구축해야겠다고 생각해서 docker로 구현한 것을 정리해 보았다. 1. docker- compsoe.yml 작성 version: '3' services: spark: image: docker.io/bitnami/spark:3.3 environment: - SPARK_MODE=master - SPARK_RPC_AUTHENTICATION_ENABLED=no - SPARK_RPC_ENCRYPTION_ENABLED=no - SPARK_LOCAL_STORAGE_ENCRYPTION_ENABLED=no - SPARK_SSL_ENABLED=no p..

[Spark] sql + 데이터프레임 읽고 쓰기

이 포스팅은 ⟪러닝 스파크(2판)⟫(제이펍, 2022년)을 공부하면서 정리한 내용입니다. *Spark sql spark에서는 Sparksession을 사용하여 sql을 사용할 수 있다. 예제 코드를 보면 다음과 같다. from pyspark.sql import SparkSession spark=(SparkSession .builder .appName("sqlExam") .getOrCreate()) csv_file = "/databricks-datasets/learning-spark-v2/flights/departuredelays.csv" df= (spark.read.format("csv") .option("inferSchema", "true") .option("header", "true") .load(c..

Spark 정형화 api

이 포스팅은 ⟪러닝 스파크(2판)⟫(제이펍, 2022년)을 공부하면서 정리한 내용입니다. * 저수준 DSL과 고수준 DSL 여기서 저수준의 DSL은 spark 1.x 버전에 있던 RDD를 의미하고 그 이후에 2.x에서는 고수준 DSL을 사용하고 있다. 저수준과 고수준의 차이는 저수준 DSL보다 고수준 DSL이 훨씬 더 표현력이 높으며 이전보다 더 간단하게 사용할 수 있다는 것이다. #기존 저수준 DSL의 표현방식 RDD=sc.parallelize([("JNAG", 23), ("KIM",25), ("PARK",22), ("AN",22)]) agesRDD= RDD.map(lambda x: (x[0], (x[1], 1)))\ .reduceByKey(lambda x, y: (x[0]+y[0], x[1]+y[1]..

Spark 기본 개념 및 용어정리

이 포스팅은 ⟪러닝 스파크(2판)⟫(제이펍, 2022년)을 공부하면서 정리한 내용 입니다. *Spark 애플리케이션 개념 SparkSession - 스파크의 코어 기능들을 사용할 수 있는 객체 job(잡) - 스파크 액션에 대한 응답으로 생성 (여러 task로 이루어진 병렬 연산) stage(스테이지) - 잡은 의존성을 가지는 다수의 태스크 모음으로 나뉘는데 이를 스테이지라고 한다. task(태스크) - 스파크의 작업 실행의 가장 기본적인 단위 드라이버-> 잡 -> 스테이지 -> 테스크 순으로 분산처리 된다. ex) 드라이버에서 3개의 job으로 나뉘고 각각의 job에서 스테이지로 스테이지에서 3개의 테스크로 나뉜다. *트랜스포메이션과 액션 스파크는 기본적으로 분산 데이터 연산으로 트랜스포메이션과 액션으..