이전 글에서 list 형태로 저장되어있는 데이터를 각각의 row들로 분리하여 두 컬럼을 추출하는 것까지 진행하였다.
다음 순서로 두 컬럼을 이어붙여 아래와 같은 Dataframe을 생성하려고 했으나 pandas의 concat 역할을 수행하는 pyspark의 함수를 찾을 수 없었다.
단순히 join으로는 두 컬럼을 가로로 붙일 수 없다.
대안
- 두 데이터 프레임에 monotonically_increasing_id() 를 이용하여 id를 부여한다.
- id를 기준으로 left join 한다.
- id를 삭제한다.
df1 = df1 .withColumn("id", monotonically_increasing_id())
df2 = df2 .withColumn("id", monotonically_increasing_id())
df3 = df1.join(df2, "id", "left").drop("id")
> df1.show()
+-----------+---+
| Brand| id|
+-----------+---+
| LO| 0|
| LO| 1|
| LO| 2|
|Non-branded| 3|
|Non-branded| 4|
|Non-branded| 5|
| Samsung| 6|
+-----------+---+
> df2.show()
+--------------------+---+
| Product| id|
+--------------------+---+
| AirPods Pro| 0|
| AirPods 2| 1|
| AirPods Pro| 2|
| Earbuds category| 3|
| Earbuds category| 4|
| Earbuds category| 5|
| Galaxy Buds| 6|
+--------------------+---+
> df3.show()
+-----------+--------------------+
| Brand| Product|
+-----------+--------------------+
| LO| AirPods Pro|
| LO| AirPods 2|
| LO| AirPods Pro|
|Non-branded| Earbuds category|
|Non-branded| Earbuds category|
|Non-branded| Earbuds category|
| Samsung| Galaxy Buds|
+-----------+--------------------+
Ref.
https://forums.databricks.com/questions/8180/how-to-merge-two-data-frames-column-wise-in-apache.html
'Big Data > Spark' 카테고리의 다른 글
[Spark] Apache Arrow란? (Zero-Copy 직렬화에 대하여) (0) | 2021.12.30 |
---|---|
[Spark] 하둡 hdfs 파일 하나로 합쳐 local에 내려받기 (getmerge, *.gz파일) (0) | 2021.12.06 |
[Spark] SQL - explode()를 사용하여 list 형태의 Row 분리하기 (0) | 2021.10.03 |