반응형

Apache Spark

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 참고

 

현업에서 많이 사용하는 Python 모듈 | Pandas (Series, DataFrame)

안녕하세요~ "현업에서 많이 사용하고 있는 Python 모듈 마스터하기!" 라는 시리즈를 포스팅하려고 합니다. 그 중 첫 번째편은 바로 Pandas 입니다! Pandas의 DataFrame의 형태가 데이터베이스의 테이블

everyday-deeplearning.tistory.com

 

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()

 

반응형

+ Recent posts