반응형
Spark란?
: 인 메모리 형의 고속 데이터 처리
대량의 메모리를 활용하여 고속화 실현이 가능하다. Spark는 *Hadoop을 대체하는 것이 아니라 Hadoop의 구성 요소 중 분산 데이터 처리에 사용되는 **MapReduce를 대체하는 존재다. (Hadoop과는 다른 독립된 프로젝트이다.)
Spark는 스크립트 언어(JAVA, Scala, Python, R)를 사용할 수 있다는 장점이 있다.
*Hadoop: 대표적인 빅데이터 처리 시스템으로 분산된 다수의 컴퓨터에서 대량의 데이터를 처리하기 위한 시스템
**MapReduce: 대량의 데이터를 배치 처리하기 위한 시스템 (Map과 Reduce 기능으로 구성)
Pandas DataFrame vs Spark DataFrame
Pandas DataFrame
numpy ndarray를 기반으로 데이터 분석을 쉽고 빠르게 처리하기 위해 많이 사용되고 있다. 병렬 처리가 안된다.
이전 포스팅) 현업에서 많이 사용하는 Python 모듈 | Pandas 참고
Spark DataFrame
a.k.a SQL의 탈을 쓴 DataFrame
Spark는 SQL과 유사한 형태의 연산을 지원하는 API로 구성되어 있다.
병렬 CPU처리 및 분산 서버 데이터 처리가 가능하다.
Spark DataFrame의 경우 Pandas DataFrame과 달리 대부분 새로운 DataFrame 객체를 반환하는 형태로 구성되어있다.
예시)
table
gender | age |
M | 31 |
F | 27 |
M | |
F | 32 |
Query
SQL | Pandas DataFrame | Spark DataFrame |
Select gender From table | table['gender'] | table.select('gender') |
Select * From table Where gender='F' | table[lambda x: x['gender'] == 'F'] | table.filter(F.col('gender') == 'F') |
Update age=age+1 From table | table['age'] = table['age'].apply(lambda x: x+1) | table.withColumn('age', F.col('age') + 1) |
Select gender, count(*) From table Group By gender | table.groupby('gender')['gender'].count().reset_index() | table.groupBy('gender').count() |
두 DataFrames간 변환이 가능하다.
spark_df = spark.createDataFrame(pandas_df)
pandas_df = spark.select('*').toPandas()
반응형
'Data Engineering' 카테고리의 다른 글
Docker Compose 튜토리얼 (0) | 2023.07.01 |
---|---|
빅데이터 기술 | Kafka로 데이터 수집하기 (0) | 2023.04.06 |
빅데이터 기술 | Airflow로 데이터 파이프라인 생성하기 (ETL) (0) | 2022.12.19 |
Git | Git on the command line (in mac) (0) | 2019.12.17 |