원본 데이터셋은 위와 같이 되어있으며 여기서 Brand와 Product 칼럼을 추출하고자 하였다.
하지만 select 결과 아래와 같이 Row들이 list형태로 들어가있었다.
> df.select(df.Brand, df.Product)
+--------------------+--------------------+
| Brand| Product|
+--------------------+--------------------+
|[LO, LO, LO, Non-...|[AirPods Pro, Air...|
+--------------------+--------------------+
pyspark.sql.functions.explode
explode함수는 주어진 배열 또는 맵의 각 요소에 대해 새 행을 반환한다.
> df.select(explode(df.Brand))
+-----------+
| col|
+-----------+
| LO|
| LO|
| LO|
|Non-branded|
|Non-branded|
|Non-branded|
| Samsung|
+-----------+
이때, 컬럼명을 지정해주지 않으면 defualt는 col
로 지정하기 때문에 alias
를 이용하여 컬럼명을 바꿔준다.
> df.select(explode(df.Brand).alias("Brand"))
+-----------+
| Brand|
+-----------+
| LO|
| LO|
| LO|
|Non-branded|
|Non-branded|
|Non-branded|
| Samsung|
+-----------+
Ref.
'Big Data > Spark' 카테고리의 다른 글
[Spark] Apache Arrow란? (Zero-Copy 직렬화에 대하여) (0) | 2021.12.30 |
---|---|
[Spark] 하둡 hdfs 파일 하나로 합쳐 local에 내려받기 (getmerge, *.gz파일) (0) | 2021.12.06 |
[Spark] SQL - 두 컬럼을 병합하여 새로운 Dataframe 만들기 (0) | 2021.10.03 |