본문 바로가기
분석환경구축하기/GCP

[GCP] #06 Google Bigquery GCE 파이썬서버에서 활용하기

by DoBeFree 2022. 2. 20.
반응형

<시리즈 목차> 

1화 : [GCP] #01 GCP Compute Engine VM 으로 분석서버 구축하기
2화 : [GCP] #02 GCP Compute Engine VM 인스턴스 초기 세팅하기
3화 : [GCP] #03 GCP Compute Engine VM에 파이썬(Python) 분석환경 구성하기
4화 : [GCP] #04 GCP Compute Engine VM에 R 분석환경 구성하기
5화 : [GCP] #05 분석을 위한 Google CloudSQL SQLServer 구축&GCE 파이썬 분석서버와 연결하기
6화 : [GCP] #06 Google Bigquery GCE 파이썬서버에서 활용하기
7화 : [GCP] #07 GCP Compute Engine VM에 아파치 에어플로우(Airflow) 설치하여 ETL 환경 구축하기
8화 : [GCP] #08 GCP Compute Engine VM에 제플린(zepplien), 스파크(Spark), 스칼라(Scala) 설치하기
9화 : [GCP] #09 Google Cloud Storage 저장소를 GCE 파이썬 서버에서 활용하기

1. Google Compute Engine 인스턴스 파이썬(Python)과 Bigquery간 연결설정하기

기본적으로 GCE(Google Compute Engine)에서는 별도 인증 없이 바로 빅쿼리(Bigquery) 서비스를 이용할 수 있기 때문에 파이썬 google-cloud-bigquery 라이브러리 설치후 jupyter notebook에서 바로 사용가능하다. 

* Google Compute Engine VM인스턴스에 jupyter notebook 서버 생성은   [GCP] #03 GCP Compute Engine VM에 파이썬(Python) 분석환경 구성하기 에서 확인가능하다.

VM인스턴스 SSH 쉘에서 아래 명령어를 입력하여 설치를 진행한다.

$ pip install --upgrade google-cloud-bigquery
GCE VM인스턴스 생성시 마스터 서비스계정으로 마스터권한을 부여한 상태이기 때문에 모든 리소스에 권한이 있는 상태이다. 따라서 VM인스턴스 생성시에 인스턴스 API 권한을 제한적으로 생성하였다면 별도로 VM인스턴스의 빅쿼리 서비스에 대한 접근권한을 부여하는것이 필요하다.

아래와 같이 google-cloud-bigquery 라이브러리를 통해 빅쿼리에 쿼리를 전송하고 결과를 jupyter notebook 으로 핸들링 할 수 있다.

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

query = """
    SELECT name, SUM(number) as total_people
    FROM `bigquery-public-data.usa_names.usa_1910_2013`
    WHERE state = 'TX'
    GROUP BY name, state
    ORDER BY total_people DESC
    LIMIT 20
"""
query_job = client.query(query)  # Make an API request.

print("The query data:")
for row in query_job:
    # Row values can be accessed by field name or index.
    print("name={}, count={}".format(row[0], row["total_people"]))

 

pandas dataframe 으로 빅쿼리 쿼리결과를 저장하기 위해서는 아래와 같이 사용할수 있다.

from google.cloud import bigquery

bqclient = bigquery.Client()

# Download a table.
table = bigquery.TableReference.from_string(
    "bigquery-public-data.utility_us.country_code_iso"
)
rows = bqclient.list_rows(
    table,
    selected_fields=[
        bigquery.SchemaField("country_name", "STRING"),
        bigquery.SchemaField("fips_code", "STRING"),
    ],
)
dataframe = rows.to_dataframe(
    create_bqstorage_client=True,
)
print(dataframe.head())

 

추가적인 세부 사용에 대해서는 아래 공식문서에서 확인가능하다.
* GCP python 연결 공식 가이드 문서: BigQuery API Client Libraries | Google Cloud

 

BigQuery API 클라이언트 라이브러리  |  Google Cloud

C++, C#, Go, 자바, Node.js, PHP, Python, Ruby에서 BigQuery API와의 상호작용에 대한 정보

cloud.google.com

 

반응형

댓글