Spark DataFrame은 SQL 연산과 비슷한 연산자 제공
- ex. spark_dataframe.select(’컬럼명’).filter(.....), spark_dataframe.groupBy(’컬럼명’).count(), spark_dataframe.withColumns(’컬럼명’,....)
주요 API: select
, filter
, withColumns
, groupBy
- spark_df.select(’gender’)
- spark_df.filter(spark_dt[’gender’] == ‘F’)
- spark_df.withColumns(’age’, col(age)+10)
- spark_df.groupBy(’gender’).count()
Spark DataFrame의 연산은 대부분 새로운 객체를 반환하는 형태로 구성, 특히 데이터프레임 객체에 직접 수정을 허용하지 않음
- 판다스에서는 pandas_dataframe.drop(’컬럼명’, axis=1, inplace = True)를 호출하면, 객체 자체에서 컬럼을 드롭 시킴
- 스파크는 inplace 인자가 없고, drop과 같이 변경 수행 시 새로운 데이터 프레임 반환
- Spark DataFrame은 [] 연산자 활용이 제한적이고 대신, withColumns() 메소드를 활용함.
- Spark DataFrame은 여러 컬럼에 접근하기 위해 리스트 []를 이용하지 않음
- pandas_dataframe.drop([’컬럼1’, ‘컬럼2’,...])와 같이 리스트로 컬럼을 지정함
- 그러나, 스파크는 spark_dataframe.drop(’컬럼1’, ‘컬럼2)와 같이 개별 컬럼을 인자로 모두 입력함
# pandas to spark
spark_df = spark.createDataFrame(pandas_df)
# spark to pandas
pandas_df = spark_df.select(’*’).toPandas()