DevCourse TIL Day3 Week9

김태준·2023년 5월 31일
0

Data Enginnering DevCourse

목록 보기
38/93
post-thumbnail

이번 프로젝트를 진행하면서 큰 플로우는 다음과 같다.

raw_data -> GCS -> Cloud-Function 등등 -> Bigquery -> Power BI

지난 시간에 진행한 만들어둔 GCS, Bigquery 연동에 이어 GCS를 Python과 연동하여 처리하는 방식을 진행해보고자 한다.

✅ GCS - Python 연동

연동에 앞서 GCS를 생성하고 프로젝트와 연동하는 작업을 미리 실행해준다.
이후 아래 코드를 활용하여 google cloud python library를 설치해준다.

pip install google-cloud-storage

이후 GCS 콘솔에 접속해 다음을 실행한다.
프로젝트 -> IAM 및 관리자 -> 서비스 계정 -> 키생성(json)
만들어진 json파일은 자동으로 다운되며 작업중인 서버로 옮긴다.
이후 만든 서비스 계정을 사용하기 위해선 환경변수 설정이 필요한데, 다음 코드를 사용해준다.

from google.cloud import storage
from google.colab import auth

# 인증 설정
auth.authenticate_user()

# 클라이언트 생성
client = storage.Client()

# 버킷 가져오기
bucket_name = 'hale-posting-bucket'
bucket = client.get_bucket(bucket_name)

# 코랩에서 로컬환경 파일 1개 불러오기
from google.colab import files
upload = files.upload()

# 업로드한 파일을 Blob으로 원하는 GCS 폴더에 업로드
folder_path = 'sample-connection-test/'
for filename, content in upload.items():
    blob_name = folder_path + filename
    blob = bucket.blob(blob_name)
    blob.upload_from_string(content)
    print(f'{filename} 업로드 완료.') 

그 결과 아래와 같이 GCS에 잘 업로드 된 것을 확인할 수 있다.

만일, 타인이 만든 GCS인 경우 아래 코드를 이용해 인증 및 클라이언트 생성을 해주어야 한다.

from google.cloud import storage
credentials_path = '/content/drive/My Drive/Colab Notebooks/DE_DevCos_Project2/job-posting-api-388303-8ec7283e13da.json'
# 인증 정보 설정
client = storage.Client.from_service_account_json(credentials_path)
# 버킷 가져오기
bucket_name = 'hale-posting-bucket'
bucket = client.get_bucket(bucket_name)
# 코랩에서 로컬환경 파일 불러오기
from google.colab import files
upload = files.upload()
folder_path = 'sample-connection-test/'
for filename, content in upload.items():
    # 업로드한 파일을 Blob으로 업로드
    blob_name = folder_path + filename
    blob = bucket.blob(blob_name)
    blob.upload_from_string(content)

    print(f'{filename} 업로드 완료.') 

오늘 코드로 자동화 작업도 하며 진행을 해보니, GCS에 있어 DW와 연결하는 부분을 협업하려면 별도로 진행하는 것보단, GCS - Bigquery과정에 있어 Cloud Function을 구축하는 부분만 데이터 타입, 형태에 따른 function을 파트를 나누어 만드는 것이 IAM 부여라든지, 데이터 정합성 측면에서 더 나은 것 같다.

✅ GCS - Bigquery 연동

물론, 클릭 몇 번만으로도 GCS에 저장된 데이터, S3 등 여러 클라우드 스토리지를 비롯해 로컬 환경으로부터 데이터를 Bigquery에 적재할 수 있으나, 자동화 과정을 거치는 작업을 진행하여 의미를 높이려 한다.

방법은 Cloud Function 기능 활용이다.

profile
To be a DataScientist

0개의 댓글