프로그래머스 152

Spark 클라우드

강의 AWS Spark AWS에서 Spark를 실행하기 위해서는 EMR(Elastic MapReduce)를 이용하는 것이 일반적입니다. "EMR"은 Hadoop의 YARN과 유사한 기능을 제공하는 AWS의 서비스 입니다. worker node : EC2 서버 HDFS : S3 실행 과정 AWS EMR 클러스터 생성 옵션 : Spark 실행 m5.xlarge 노드 3개 선택 기본 파일 시스텀 선택 : S3 마스터 노드 포트 번호 22 지정 마스터 노드를 드라이버 노드로 사용 : SSH 이용하여 로그인 PySpark 잡 코드 실행 ssh -i 프라이빗키.pen hadoop@마스터노드호스트이름 spark-submit --master yarn stackoverflow.py # stackoverflow.py fr..

Spark 내부동작

강의 내부 연산 Transformations Narrow Dependencies 독립적인 Partition level 작업 병렬처리 가능 select, where, filter, map, count Wide Depedencies Shuffling이 필요한 작업 groupby, reduceby, partitionby, repartition, coalece Actions Read, Write, Show, Collect Job 실행 Lazy Execution 내부 동작 Action → Job → Stages → Tasks Action : 하나의 Job 생성 및 코드 실행 Jobs : 다수의 Stage로 구성 후 Shuffling 발생시 추가 생성 Stages : DAG 형태의 Task 병렬 실행 가능 Task..

Spark 파일 포맷

강의 Spark 파일 포맷 Unstructured : Text 눈으로 확인 가능 Semi-structured : JSON, WML, CSV 눈으로 확인 가능 Structured : PARQUET, AVRO, ORC, SequenceFile 압축된 정보 스키마 제공 # 파일 다운로드 !wget https://pyspark-test-sj.s3.us-west-2.amazonaws.com/appl_stock.csv from pyspark.sql import * from pyspark.sql.functions import * if __name__ == "__main__": spark = SparkSession \ .builder \ .appName("Spark Writing Demo") \ .master("loc..

Spark Unit Test

강의 Unit Test "Unit Test"는 코드 상의 특정 기능을 테스트하기 위해 작성된 코드 입니다. 정해진 입력에 대한 예상된 출력 확인 형태 CI/CD를 사용할 때 전체 코드의 테스트 커버리지 중요 언어별 정해진 테스트 프레임워크 사용 Java : JUnit .NET : NUnit Python : unittest 실습 # 파일 다운로드 !wget https://s3-geospatial.s3-us-west-2.amazonaws.com/name_gender.csv from pyspark.sql import SparkSession spark = SparkSession \ .builder \ .appName("Python Spark Unit Test") \ .getOrCreate() df = spark..

Hive 메타 스토어

강의 카탈로그 "카탈로그"는 테이블과 뷰에 관한 메타 데이터를 관리합니다. 메모리 기반 카탈로그 기본 Hive 호환 카탈로그 제공 : Persistent 데이터베이스를 통해 테이블을 폴더 구조로 관리 테이블 종류 메모리 기반 테이블/뷰 임시 테이블 스토리지 기반 테이블 HDFS Parquet 포맷 사용 Hive 호환 메타스토어 사용 테이블 종류 Managed Table : 실제 데이터 및 메타 데이터 관리 Unmanaged(External) Table : 메타 데이터 관리 Hive 메타 스토어 구현 스토리지 기반 카탈로그 SparkSession 생성시 enableHiveSupport() 호출 default 데이터베이스 생성 Managed Table 테이블 생성 daaframe.saveAsTable(tab..

Spark SQL 실습 3

실습 실습 3. 사용자별로 처음 채널과 마지막 채널 알아내기 테이블을 데이터프레임으로 로딩 데이터프레임별 테이블 이름 지정 !cd /usr/local/lib/python3.8/dist-packages/pyspark/jars && wget https://s3.amazonaws.com/redshift-downloads/drivers/jdbc/1.2.20.1043/RedshiftJDBC42-no-awssdk-1.2.20.1043.jar from pyspark.sql import SparkSession spark = SparkSession \ .builder \ .appName("Python Spark SQL #1") \ .getOrCreate() # Redshift와 연결 및 DataFrame으로 로딩하기 u..