스파크완벽가이드 - 5장 구조적 API 기본 연산
·
DataPipeline/Spark
- DataFrame은 Row 타입의 레코드와 연산 여러 컬럼으로 구성- 스키마는 각 컬럼명과 데이터의 타입을 정의- 파티셔닝은 DataFrame이나 Dataset이 클러스터에서 물리적으로 배치되는 형태를 정의- 예제를 위한 DataFrame 생성df = spark.read.format('json').load('/Users/myname/Test/Spark_ref/sparkGuide/data/2015-summary.json')df.printSchema()root |-- DEST_COUNTRY_NAME: string (nullable = true) |-- ORIGIN_COUNTRY_NAME: string (nullable = true) |-- count: long (nullable = true)  5.1 스..
스파크완벽가이드 - 4장 구조적 API 개요
·
DataPipeline/Spark
구조적 API에는 3가지 분산 컬렉션 API가 있음- Dataset- DataFrame- SQL Table & View3가지 핵심 개념- 타입형 / 비타입형 API 개념과 차이점- 핵심용어    ㄴ 카탈리스트 / 카탈로그 / 실행 계획 / 조건절 푸쉬 다운- 스파크가 구조적 API의 데이터 흐름을 해석하고 클러스터에서 실행하는 방식  4.1 DataFrame과 Dataset- DataFrame과 Dataset은 잘 정의된 로우와 컬럼을 가지는 분산 테이블 형태의 컬렉션- 값 없음은 null 로 표시  4.2 스키마- 스키마는 DataFrame의 컬럼명과 데이터 타입을 지정- 스키마는 데이터소스에서 얻거나 (schema on read) 직접 정의- 예제from pyspark.sql.types import ..
스파크완벽가이드 - 2장 스파크 간단히 살펴보기
·
DataPipeline/Spark
2.1 스파크 기본 아키텍처클러스터- 클러스터는 여러 컴퓨터의 자원을 모아 하나의 컴퓨터 처럼 사용- 스파크는 클러스터에서 작업을 조율할 수 있는 역할을 하는 프레임워크 드라이버 프로세스- 클러스터 노드 중 하나에서 실행되며 main() 함수를 실행- 필수적으로 존재 익스큐터 프로세스- 드라이버가 할당한 작업을 수행 후, 드라이버 노드에 보고하는 두가지 역할 수행  모드 실행 예제클러스터 모드 실행 예제from pyspark.sql import SparkSessionspark = SparkSession.builder \ .appName("MySparkApp") \ # 애플리케이션 이름 설정 .master("spark://:") \ # 마스터 노드의 주소 설정 .config("spark..
스파크완벽가이드 - 1장 아파치 스파크란
·
DataPipeline/Spark
1. 스파크 기능 구성2. 컴퓨팅 엔진- 스파크는 저장소 시스템의 데이터를 연산하는 역할을 수행- 영구 저장소 역할은 수행하지 않으며 대신에 AWS S3, Hadoop, 카산드라, 카프카 등의 저장소를 지원 3. 스파크 설치하기# homebrew로 설치 ( MAC )brew install apache-spark# spark 경로 확인brew info apache-spark# spark version 확인spark-submit --version# spark shell 실행 pysparkspark-shell
Python - Numpy란 [1]
·
Programming/Python
Numpy란Numpy는 Numerical Python의 약자로 Numeric과 Numarray라는 두 개의 패키지를 기반으로, 다차원 배열 객체를 컨트롤하는데 이점이 있습니다. Numpy는 Pandas가 구축된 기본 데이터 구조와 연산을 제공합니다.Pandas를 사용하는 것인 Numpy도 같이 사용하는 하는 의미입니다.  List와 비교Numpy를 활용하는 것은 Python List보다 50배 더 빠릅니다.사용시 메모리에서 연속적인 참조위치로 저장이되므로 액세스시 매우 효율적이고, 최근 CPU와도 최적화가 잘 되어있습니다. C, C++로 프로그래밍되어 있으며Numpy를 이용한 array object를 ndarray라고 부릅니다. 예제 )import numpy as nparray = np.array([[1..
Pyspark Session
·
DataPipeline/Spark
[ SparkSession ]Spark를 사용하기 위해선 entry point를 제공하는 Spark 객체를 사용해야 한다.보통 SparkContext와 SparkSession은 사용하는데,SparkSession은 Spark 2.0 버전에서 나왔고 spark RDD, DataFrame, DataSet, spark sql 사용이 가능하다. spark-shell에서 자동적으로 SparkSession 객체가 생성되며 spark 변수로 사용할 수 있다. 또한 기존 SparkContext에서 다른 종류의 contexts인 SQLContext, HiveContext와 함께 사용하기도 하였는데, SparkSession은 이를 대체하여 범용성을 가진다.아래 예시를 보자 - SparkContextfrom pyspark i..
Python - 클로저와 __call__ 함수
·
Programming/Python
클로저 기능의 필요성을 확인하기 위해 아래와 같이 defaultdict을 활용하여 result값을 초기화 시키는 코드가 있다. defaultdict(키가 없을 경우 초기 값, 선언된 dict) 형식에 맞춰 result를 선언하였고, 키가 없을 경우 초기 값에 로그를 보기 위해 숫자가 아닌 log_init 함수로 설정하였다. ( 함수또한 일급객체이므로 참조 값으로 활용 가능 ) def log_init(): print('키가 초기화 됨') return 0 from collections import defaultdict current = {'green': 15, 'blue': 7} increments = [ ('red', 6), ('blue', 17), ('orange', 9) ] result = defaul..
Python - 파이썬 코딩의 기술을 통한 클린코딩
·
Programming/Python
해당 글은 파이썬 코딩의 기술(개정 2판 -> 3.8버전까지 맞춤형) 서적을 읽고 나중에 다시 보려고 몇몇 내용을 간략하게 정리했다. '이렇게 짯으면 더 좋은 코드가 되었을텐데' 라는 부분이 많았고 알지만 애매하게 알았던 부분에 대해 도움이 되었던 내용을 정리했다. BETTER WAY 08 - 여러 이터레이터에 루프를 수행하려면 zip를 사용하라 주어진 names list의 가장 긴 길이를 가지는 원소를 구해보자. longest_name = None max_count = 0 names = ['Kain', 'Joe', 'Alice'] counts = [ len(n) for n in names ] print(counts) >>> [4, 3, 5] enumerate를 생각할 수 있다. for i, name i..
wave35
아그거뭐였지?