
Mongo DB는 Time zone이 UTC로 고정되어 있다.
따라서 Mongo DB에서 데이터를 불러올 때, Date 형식의 변수 값이 다를 수 있다.
필자의 경우, pymongo를 통해 데이터를 입력할 때는 정상적으로 되었으나, 추후 Spark를 통해 데이터를 읽어왔을 때 문제가 생겼다.
🤔 문제
필자는 네이버 종목토론방의 정보를 다루는 중이라서 이를 예시로 들겠다.


살펴보면 시간대가 9시간이 차이나는 것을 알 수 있다. 🤔
이러면 Date로 필터링할 때, 엄청난 혼선을 겪을 수 있다. 필자가 그랬다...
생각해보면 Pyspark에서 불러올 때 MongoDB의 시간대는 UTC이고, Pycharm 환경의 시간대는 한국(UTC+9)임으로 자동으로 9시간을 더한 것 같다.
그래서 이를 해결하기 위해서 이것저것 해보았지만, 아래 방법이 가장 나은 것 같았다.
💡 해결
해결 방법은 간단하다. datetime 모듈을 활용하여 filtering 해주는 기준에 9시간을 더 하면 된다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 기준이 되는 시간에 9시간을 더 해준다. | |
start_datetime, end_datetime = start_datetime + datetime.timedelta(hours=9), end_datetime + datetime.timedelta(hours=9) | |
forum_df = s.mongodb_read('forumdb', 'naverforum') \ | |
.filter(f.col('datetime').between(str(start_datetime), str(end_datetime))) |
해결은 간단했지만, 애초에 Mongo DB의 시간대가 다른 줄 몰랐어서 엄청 해맸었던 문제였다... 😤
반응형
'Engineering 💻 > DB' 카테고리의 다른 글
[DB] Index란 (feat. B+-Tree) (0) | 2022.02.13 |
---|---|
[PostgreSQL] Python에서 다중 행을 Insert하는 다양한 방법과 비교 (0) | 2022.02.10 |
[DB] 데이터베이스 기초 (0) | 2022.01.10 |