또 한번의 프로젝트가 다가오면서 매번 다른 환경에서 작업하기 보다는 GCP를 통해 일괄적으로 처리할 필요가 생겼다.
BigQuery
BigQuery는 GCP에 포함된 서비스로 데이터 베이스를 다룰 수 있다.
이 BigQuery를 Compute Engine에서 구동되게 해보려 한다.
BigQuery Client 라이브러리 설치
SSH를 통해 라이브러리를 설치한다.
(base) ***@***:~$ pip install --upgrade google-cloud-bigquery
BigQuery의 API 설정
콘솔의 API 및 서비스에서 사용 설정된 API 및 서비스를 클릭한다.
검색창에 BigQuery를 검색하고 사용버튼을 클릭한다.
이어서 사용자 인증 정보를 만든다.
서비스 계정에서 서비스 계정 관리를 클릭하면 서비스 계정 만들기 버튼을 찾을 수 있다.
서비스 계정명을 작성하고 엑세스 권한을 주기 위해 역할 선택에서 소유자를 선택해준다.
계정을 만들었다면 인스턴스 설정을 바꿔줘야 한다. Compute Engine으로 돌아와 사용할 인스턴스의 네트워크 세부정보 보기를 클릭한다.
VM 인스턴스 세부정보를 클릭하면 수정버튼을 통해 인스턴스 정보를 수정 가능하다.
인스턴스의 엑세스 범위를 모든 Cloud API 에 대한 전체 액세스 허용으로 변경하면 된다.
BigQuery 와의 연동이 끝났다.
연동여부를 확인하기 위해 사용할 데이터를 BigQuery에 추가해주자.
BigQuery 데이터 추가
인스턴스에서 streamlit으로 구현할 iris 데이터를 추가해준다.
BigQuery에서 현재 프로젝트에 데이터 세트를 만들어준다.
데이터 파일을 선택해주고 기타 항목을 채워 준 후 스키마 자동감지를 설정해준다.
project_dataset에 iris 데이터가 성공적으로 들어왔다.
이제 Streamlit을 설치해 연동 여부를 확인하면 된다.
Streamlit
pip install을 통해 몇몇 라이브러리를 설치해준다.
(base) ***@***:~$ vi requirements.txt
# vi 편집기 진입
pandas
streamlit
# vi 편집 완료
(base) ***@***:~$ pip install -r requirements.txt
compute engine의 credentials을 채우기위해 sevice account를 조회한다.
(base)***@***:~$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* 100757321****-compute@developer.gserviceaccount.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
ACTIVE ACCOUNT 아랫줄 100으로 시작하는 이메일이 service account 이다.
Streamlit을 통해 출력할 app.py를 작성한다.
import streamlit as st
import pandas as pd
from google.auth import compute_engine
from google.cloud import bigquery
credentials = compute_engine.Credentials(
service_account_email='user_service_account')
client = bigquery.Client(
project='user_project',
credentials=credentials)
# Perform query.
# Uses st.cache_data to only rerun when the query changes or after 10 min.
@st.cache_data(ttl=600)
def run_query():
sql = """
SELECT * FROM `user_project.dataset.data` LIMIT 1000
"""
project_id = 'user_project'
df = pd.read_gbq(sql, project_id = project_id, dialect='standard')
st.write(df)
st.title("The query data 가져오기")
def main():
st.title("Streamlit Iris Data Visualization")
run_query()
st.write("""
## Explore the Iris dataset
Use the controls below to explore different visualizations of the Iris dataset.
""")
if __name__ == '__main__':
main()
streamlit run app.py를 통해 구동이 되는지 확인한다.
이런 화면이 출력되면 성공적으로 연동이 된 것이다.
'STUDY > GCP' 카테고리의 다른 글
GCP/ 가상 환경 및 PySpark, Jupyter notebook 설치 (1) | 2023.10.17 |
---|---|
GCP/ 프로젝트, 인스턴스 생성 (0) | 2023.10.17 |