Schema Evolution
- 데이터가 쌓이고 난 이후에 변경되었을때(이전 스키마 버전으로 데이터가 쌓여있고 스키마가 변경되었을때) 어떻게 데이터를 저장하는지에 대한 메커니즘 용어
- 아래 같은 경우 schema마다 컬럼이 다른데 이를 parquet파일에서 어떻게 처리하는지 알아본다.
1. SparkSession 생성
from pyspark.sql import *
from pyspark.sql.functions import *
if __name__ == "__main__":
spark = SparkSession \
.builder \
.appName("Spark Schema Evolution Demo") \
.master("local[3]") \
.getOrCreate()
데이터 호출
df1 = spark.read. \
parquet("schema1.parquet")
df1.printSchema()
df1.show()
df2 = spark.read. \
parquet("schema2.parquet")
df2.printSchema()
df2.show()
df3 = spark.read. \
parquet("schema3.parquet")
df3.printSchema()
df3.show()
위 3개의 parquet파일들을 한번에 불러올 수 있다.
- mergeSchema을 True로 세팅
- 3개의 파일을 하나의 데이터프레임으로 로딩된다.
df = spark.read. \
option("mergeSchema", True). \
parquet("*.parquet")
df.printSchema()
df.show(10)
728x90
반응형
'Spark & Hadoop > Spark' 카테고리의 다른 글
[Spark] Spark 프로그램 구조 (Driver, Executor), Spark Cluster Manager (0) | 2024.05.05 |
---|---|
[Spark] HDFS Bucketing & Partitioning (Partitioning pyspark 코드 예시) (0) | 2023.10.08 |
[Spark] Spark 파일 Type 종류 및 Pyspark로 데이터 Write하는 방법 (Parquet / AVRO) (1) | 2023.10.03 |
[Spark] Windows 10에 Spark 설치하기 (Java설치, 환경변수 세팅) (1) | 2023.10.02 |
[Spark] SparkSession 생성과 환경변수 세팅 (0) | 2023.09.30 |