고급 DataFrame 연산

PySpark 입문

Ben Schmidt

Data Engineer

PySpark의 조인

  • 공통 열을 기준으로 두 개 이상 DataFrame의 행 결합
  • 조인 유형: inner, left, right, outer (SQL 유사)

  • 구문: DataFrame1.join(DataFrame2, on="column", how="join_type")

# id 열로 inner 조인
df_joined = df1.join(df2, on="id", how="inner")

# 열 이름이 다른 경우 조인 df_joined = df1.join(df2, df1.Id == df2.Name, "inner")
PySpark 입문

Union 연산

  • 스키마가 같은 두 DataFrame의 행을 결합

  • 구문: DataFrame1.union(DataFrame2)

# 동일 스키마 두 DataFrame의 유니온
df_union = df1.union(df2)
PySpark 입문

Array와 Map 다루기

Array: 열 내 리스트 저장에 유용, 구문: ArrayType(StringType(),False)`

from pyspark.sql.functions import array, struct, lit

# 배열 열 생성
df = df.withColumn("scores", array(lit(85), lit(90), lit(78)))

Map: 키-값 쌍, 딕셔너리형 데이터에 적합, MapType(StringType(),StringType())

from pyspark.sql.types import StructField, StructType, StringType, MapType

schema = StructType([
    StructField('name', StringType(), True),
    StructField('properties', MapType(StringType(), StringType()), True)
])
PySpark 입문

Struct 다루기

  • Struct: 행 내 중첩 구조 생성 구문: StructType(Structfield, Datatype())
# struct 열 생성
df = df.withColumn("name_struct", struct("first_name", "last_name"))

# struct 열 생성 df = df.withColumn("name_struct", struct("first_name", "last_name"))
PySpark 입문

연습해 봅시다!

PySpark 입문

Preparing Video For Download...