728x90
loop를 돌면서 DF된 새로운 데이터를 만들고 모든 데이터를 합치려고 할 때 loop 안에서 변수를 정의하면, 기존에 변수에 저장된 데이터가 없어진다.
이런 경우 전역변수를 만들어서 해결해야 한다.
그렇게 하기 위해서는 비어있는 Dataframe을 만들어야하는데 번거로운 작업일 수 있다.
그래서 필자는 아래와 같이 진행했다.
- 비어있는 문자열 변수 A를 정의한다.
- for문에서 Dataframe 타입의 변수 B에 새로운 데이터를 삽입한다.
- A 변수가 문자열 타입이면 첫 번째 반복이므로 변수 B를 삽입한다.
- A 변수가 DF 타입이면, 두 번째 이후의 반복이므로 unionAll을 이용해서 데이터를 추가한다.
from pyspark.sql import DataFrame
df_all = ''
for _ in range(0,3):
# 새로운 데이터 만들기
.....
df = .....
.....
# 첫 번째 루프면 df를 바로 삽입하고, 아니면 union으로 데이터를 합한다.
if type(df_all) == DataFrame:
df_all = df_all.unionAll(df)
else:
df_all = df
728x90
'빅데이터(BigData) > Spark' 카테고리의 다른 글
pyspark 실행 후 config를 수정하는 방법 (0) | 2021.07.06 |
---|---|
ModuleNotFoundError: No module named 'pyspark' 에러 발행할 때 findspark로 해결하기 (0) | 2021.06.14 |
pyspark에서 agg에서 multiple columns 사용하기 (0) | 2021.04.13 |
스파크에서 로그 레벨 정의하기 (0) | 2021.04.12 |
spark에서 parquet 파일 데이터 조회하기 (0) | 2021.03.24 |