-
[GCP복습]BigQuery | GCS의 csv파일 BigQuery로 업로드하기카테고리 없음 2021. 10. 29. 14:32
BigQuery는 구글의 서버리스 기반의 데이터 웨어하우스이다.
ANSI:2011을 준수하는 표준 SQL을 지원하며, ODBC및 JDBC 드라이버를 제공한다.
기가바이트급에서 페타 바이트 급에 이르는 데이터를 대상으로 초고속으로 SQL 쿼리를 실행할 수 있다.
*데이터세트를 빠르게 읽고 조회하는것이 메인 기능. 이를 통해 ML로 넘어갈 수 있도록 하는 것이 빅쿼리의 목적
표준 SQL 문법을 통해서 데이터를 처리할 수 있다.
Google Cloud Storage와 구글시트, 구글 드라이브 등으로 손 쉽게 데이터를 읽을 수 있으며 인포매티카와 탈랜드 같은 기존 ETL 도구와의 연동도 지원한다. 또한 MSTR/타블로(Tableu)와 같이 BI 도구와 자체적으로 BI엔진을 지원하여 대시보드를 만들 수 있다.
구조
Project : 가장 큰 개념으로 각 정보가 저장된다. 하나의 프로젝트에는 여러개의 데이터세트가 들어갈 수 있다.
Dataset : RDB의 DB와 같은 개념으로 Dataset은 특정 프로젝트에 포함되며 테이블과 뷰에 대한 액세스를 구성하고 제어하는데 사용된다. 하나의 Dataset에는 여러개의 Table을 가질 수 있다.
Table : RDB의 테이블과 같은 개념
기본 테이블 : 빅쿼리 레포에서 지원되는 테이블
외부 테이블 : 빅쿼리 외부 레포에서 지원되는 테이블
뷰 : SQL 쿼리로 정의된 가상 테이블
Job : 쿼리, 데이터 로딩, 생성, 삭제 등 작업에 대한 단위이다.
빅쿼리 ML
빅쿼리는 선형회귀 모델, 이진로지스틱 회귀, 다중 클래스 로지스틱 회귀 모델을 제공한다.
파이선/자바를 사용하지 않고 SQL만으로 ML모델을 만들 수 있다는 것이 장점이다.
데이터셋, 테이블 만들어서 스키마생성하고 값 넣기
__________________________________________
CSV형태의 데이터를 받아 DB에 올리기.
위에서는 엠티테이블로 만들었었고, 이번에는 GCS나 로컬에서 csv파일을 읽어오는 것
나는 pyspark로 만들어서 gcs에 올려놨던 csv파일을 가져와봤다.
에러가 났다. 소스 (gcs)의 위치와 데스티네이션 (bigquery) 이 달라서 나는 오류인듯하다.
보니까 테이블은 따로 로케이션 설정이 안되고, 그 위의 그룹인 데이터셋의 로케이션과 동일하게 지정된다.
근데, 데이터셋의 로케이션에서 멀티리전은 US와 EU밖에 없다.
그래서 데이터셋 말고 버킷의 위치를 옮기려고 시도해봤다. 원래는 버킷의 로케이션을 정할 때 영구적으로 설정되지만 바꿀 수 있는 방법이 있기는 하다. 삭제하면 된다^_^ ㅋㅋ 근데 지금 나는 버킷 안에 데이터가 있기 때문에 우리가 컴퓨터 기본 폴더에서 자료옮길 때 처럼 복붙/파일명 변경 하면 된다.
https://cloud.google.com/storage/docs/moving-buckets
버킷 이동 및 이름 변경 | Cloud Storage | Google Cloud
의견 보내기 버킷 이동 및 이름 변경 버킷을 만들 때 버킷의 이름, 지리적 위치, 버킷이 속한 프로젝트를 영구 정의합니다. 그러나 실질적으로 버킷을 이동하거나 이름을 변경하는 방법이 있습
cloud.google.com
아 노가다.......
이번에는 로케이션 타입을 리전으로 잡았다. 데이터셋과 같이 서울로 잡을 수 있도록.
파일은 이렇게 옮기면 된다 (가장 오른쪽 땡땡땡 누르고 copy/move 선택. 폴더명을 반드시 동일하게 할 필요없으면 혹시모르니까 copy가 나을 듯 하다)
로케이션 오류 해결! CSV 파일의 header를 같게하려면 auto detect를 하면 된다!
성공!
근데 콘솔말고 파이스파크로 bigQuery에 적재하는 방법을 알아봐야겠당
반응형