[scalaSpark] pivot과 unpivot딥상어동의 딥한 프로그래밍/Spark2021. 2. 6. 10:02
Table of Contents
초록
1. pivot
2. unpivot
pivot
val pv_dataframe =
df_dataframe
.groupBy("col0")
.pivot("col1")
.agg(countDistinct("col2").as("colname"))
groupBy와 pivot에 컬럼을 여러개 넣을 수 있다. agg에도 마찬가지
unpivot
val unpv_dataframe =
df_dataframe
.selectExpr("group", "stack(2, 'col1', col1, 'col2', col2)")
여기서 중요한 것은 stack에 "1. 들어갈 열의 숫자를 정한다"와 col1과 col2 stack시길 열을 'col1', col1 이렇게 각각 두번씩 적어줘야 한다는 것이다.
이외에 where로 조건을 붙이거나, withColumnRenamed를 통해 열 이름을 바꿀 수도 있다.
위 코드를 실행할 경우 열은 3개가 되는데
group
col0 : stack의 열 이름을 변수로 가짐 col1,과 col2
col1 : cell안의 원소 값
위와 같이 된다.
'딥상어동의 딥한 프로그래밍 > Spark' 카테고리의 다른 글
[PySpark] 자료 구조와 연산 원리 - 스파크 누구냐 넌? (4) | 2022.06.28 |
---|---|
[mllib] Pyspark Kmeans 알고리즘 사용법 (0) | 2022.04.08 |
[Pyspark] from pyspark.sql import * VS from pyspark.sql.functions import * (0) | 2022.04.07 |
[PySpark] Python 내장 함수 사용시 발생하는 오류 (0) | 2021.07.21 |
스파크의 실행 계획 (0) | 2021.04.21 |
@딥상어동의 딥한생각 :: 딥상어동의 딥한생각
제 블로그에 와주셔서 감사합니다! 다들 오늘 하루도 좋은 일 있으시길~~
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!