1. BigQuery

1.1 BigQuery Quota Errors

  • 메타데이터 조회시 최소 10MB에 해당하는 비용이 나갈수 있습니다. (캐쉬가 안되어 있어서 어떤 쿼리를 돌려서 최소 금액이 잡혀 있음)
  • 자세한 내용은 링크 참조 합니다.
  • BigQuery를 사용중 403 에러를 내놓는 경우가 있으며, response 값을 보면 자세하게 알 수 있습니다.

메타데이터를 조회시 정확한 에러를 분석할수 있습니다.
메타데이터 테이블은 아래의 종류가 있습니다.

  • INFORMATION_SCHEMA.JOBS_BY_* : BigQuery job 에 대한 쿼리 결과값을 조회가능
  • INFORMATION_SCHEMA.JOBS_BY_USER : 현재 유저가 보낸 모든 jobs에 대한 메타데이터 조회
  • INFORMATION_SCHEMA.JOBS_BY_PROJECT : 현재 포로젝트내의 모든 jobs에 대한 메타데이터 조회
  • INFORMATION_SCHEMA.JOBS_BY_FOLDER : 부모 디렉토리에서 생성한 모든 jobs에 대한 메타데이터 조회
  • INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION : 현재 organization에서 생성한 모든 jobs에 대한 메타데이터 조회

쿼리 실행시 INFORMATION_SCHEMA 는 다음의 구조로 만듭니다.

PROJECT_ID.region-REGION_NAME.INFORMATION_SCHEMA.VIEW

예를 들어서 프로젝트 ID는 project-1234 이고 BigQuery의 위치는 asia-northeast3 일 경우 다음과 같이 생성합니다.
주의할 점은 그냥 asia-northeast3 가 아니고 region- 이 반드시 앞에 붙어야 합니다.

SELECT
 job_id,
 creation_time,
 error_result
FROM  `project-1234.region-asia-northeast3.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
WHERE creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY) AND
      error_result.reason IN ('rateLimitExceeded', 'quotaExceeded')

몇가지 해결책은 다음과 같습니다.

  • rateLimitExceeded (403) : 단기간에 지나치게 비번하게 request를 보내서 생긴 현상입니다. 데이터를 모아서 한꺼번에 보낸다던가..
    retry 시도시 마다 exponential wait time을 갖고 다시 시도하면 됩니다.