스택큐힙리스트

PySpark 데이터프레임 두 개 연결하기 본문

카테고리 없음

PySpark 데이터프레임 두 개 연결하기

스택큐힙리스트 2023. 12. 3. 00:03
반응형

df_1.show()
+---+--------------------+--------------------+
| id| uniform| normal|
+---+--------------------+--------------------+
| 0| 0.8122802274304282| 1.2423430583597714|
| 1| 0.8642043127063618| 0.3900018344856156|
| 2| 0.8292577771850476| 1.8077401259195247|
| 3| 0.198558705368724| -0.4270585782850261|
| 4|0.012661361966674889| 0.702634599720141|
| 5| 0.8535692890157796|-0.42355804115129153|
| 6| 0.3723296190171911| 1.3789648582622995|
| 7| 0.9529794127670571| 0.16238718777444605|
| 8| 0.9746632635918108| 0.02448061333761742|
| 9| 0.513622008243935| 0.7626741803250845|
+---+--------------------+--------------------+
df_2.show()
+---+--------------------+--------------------+
| id| uniform| normal_2|
+---+--------------------+--------------------+
| 11| 0.3221262660507942| 1.0269298899109824|
| 12| 0.4030672316912547| 1.285648175568798|
| 13| 0.9690555459609131|-0.22986601831364423|
| 14|0.011913836266515876| -0.678915153834693|
| 15| 0.9359607054250594|-0.16557488664743034|
| 16| 0.45680471157575453| -0.3885563551710555|
| 17| 0.6411908952297819| 0.9161177183227823|
| 18| 0.5669232696934479| 0.7270125277020573|
| 19| 0.513622008243935| 0.7626741803250845|
+---+--------------------+--------------------+
#여기서 일부 이어 붙이기를 수행합니다, 어떻게?
df_concat.show()
| id| uniform| normal| normal_2 |
+---+--------------------+--------------------+------------+
| 0| 0.8122802274304282| 1.2423430583597714| None |
| 1| 0.8642043127063618| 0.3900018344856156| None |
| 2| 0.8292577771850476| 1.8077401259195247| None |
| 3| 0.198558705368724| -0.4270585782850261| None |
| 4|0.012661361966674889| 0.702634599720141| None |
| 5| 0.8535692890157796|-0.42355804115129153| None |
| 6| 0.3723296190171911| 1.3789648582622995| None |
| 7| 0.9529794127670571| 0.16238718777444605| None |
| 8| 0.9746632635918108| 0.02448061333761742| None |
| 9| 0.513622008243935| 0.7626741803250845| None |
| 11| 0.3221262660507942| None | 0.123 |
| 12| 0.4030672316912547| None |0.12323 |
| 13| 0.9690555459609131| None |0.123 |
| 14|0.011913836266515876| None |0.18923 |
| 15| 0.9359607054250594| None |0.99123 |
| 16| 0.45680471157575453| None |0.123 |
| 17| 0.6411908952297819| None |1.123 |
| 18| 0.5669232696934479| None |0.10023 |
| 19| 0.513622008243935| None |0.916332123 |
+---+--------------------+--------------------+------------+

이게 가능한가요?

답변 1

아마도 존재하지 않는 컬럼을 생성하고 union (unionAll은 Spark 1.6 이하 버전에 사용)을 호출해 볼 수 있습니다:


from pyspark.sql.functions import lit
cols = ['id', 'uniform', 'normal', 'normal_2']
df_1_new = df_1.withColumn(normal_2, lit(None)).select(cols)
df_2_new = df_2.withColumn(normal, lit(None)).select(cols)
result = df_1_new.union(df_2_new)
# 중복 제거:
result = result.dropDuplicates()

답변 2

두 개의 PySpark 데이터프레임을 연결해보자
PySpark는 대용량 데이터 처리를 위한 분산 처리 프레임워크로써, 데이터프레임을 다루는 데 매우 유용하다. PySpark를 사용하면 데이터프레임을 연결(concatenate)함으로써 데이터 처리를 좀 더 효율적으로 수행할 수 있다. 여기에서는 두 개의 PySpark 데이터프레임을 연결하는 방법에 대해 알아보도록 하겠다.
먼저, PySpark에서 두 개의 데이터프레임을 연결하기 위해서는 `union` 메소드를 사용한다. `union` 메소드는 두 개의 데이터프레임을 수직적으로 결합하는 역할을 한다. 결합을 위해선 두 데이터프레임의 스키마가 일치해야 한다. 따라서, 연결하고자 하는 두 데이터프레임의 컬럼 순서와 데이터 유형을 확인하는 것이 중요하다.
데이터프레임 연결을 위한 예시를 살펴보자. 아래와 같이 두 개의 데이터프레임을 생성한다.
```python
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField, StringType
# SparkSession 객체 생성
spark = SparkSession.builder.getOrCreate()
# 첫 번째 데이터프레임 생성
schema1 = StructType([
StructField(id, StringType(), True),
StructField(name, StringType(), True)
])
data1 = [(1, John), (2, Jane)]
df1 = spark.createDataFrame(data1, schema1)
# 두 번째 데이터프레임 생성
schema2 = StructType([
StructField(id, StringType(), True),
StructField(name, StringType(), True)
])
data2 = [(3, Tom), (4, Emma)]
df2 = spark.createDataFrame(data2, schema2)
```
두 개의 데이터프레임 `df1`과 `df2`를 연결해보자. `union` 메소드를 사용하여 다음과 같이 연결할 수 있다.
```python
# 데이터프레임 연결
df_concatenated = df1.union(df2)
```
위의 예시에서는 `df1`과 `df2`의 컬럼 순서와 데이터 유형이 동일하기 때문에 문제 없이 연결이 이루어진다. 연결된 데이터프레임은 `df_concatenated`에 저장되며, 필요에 따라 이를 추가적인 처리나 분석에 활용할 수 있다.
PySpark 데이터프레임을 연결하는 방법은 간단하지만, 사용하는 데이터의 스키마를 정확히 파악하는 것이 중요하다. 데이터프레임을 연결함으로써 데이터 처리의 효율성을 높일 수 있으므로, 데이터 프로세싱 작업을 수행하는 데 있어 PySpark의 데이터프레임을 적극적으로 활용해보자.

반응형
Comments