apache / apache/beam

python sdk WriteToBigQuery excessive usage of metered API

Open
#19,494 0 comments 0 reactions 0 assignees View on GitHub
bigquery bug core dataflow gcp P3 python
Dominant language
Java
Stars
8.7k
Forks
4.7k
Avg merge
1d 20h
Merged PRs (30d)
196

Description

Right now, there is a potential issue with the python sdk where `beam.io.gcp.bigquery.WriteToBigQuery` calls the following api more often than needed:

[https://www.googleapis.com/bigquery/v2/projects//datasets//tables/?alt=json](https://www.googleapis.com/bigquery/v2/projects/%3Cproject-name%3E/datasets/%3Cdataset-name%3E/tables/%3Ctable-name%3E?alt=json)

The above request falls under specific bigquery API quotas which are excluded from bigquery streaming inserts. When used in a streaming pipeline, we hit this quota pretty quickly, and cannot proceed to write any further data to bigquery.

Dispositions being used are:
* create_disposition: `beam.io.BigQueryDisposition.CREATE_NEVER`
* write_disposition: `beam.io.BigQueryDisposition.WRITE_APPEND`

This is currently blocking us from using bigqueryIO in a streaming pipeline to write to bigquery, and required us to formally request an API quota increase from Google to temporarily correct the situation.

Our pipeline uses DataflowRunner. Error seen is below, and in attached screenshot of stackdriver trace.
```

"errors": [
{
"message": "Exceeded rate limits: too many api requests per user per method
for this user_method. For more information, see https://cloud.google.com/bigquery/troubleshooting-errors",

"domain": "usageLimits",
"reason": "rateLimitExceeded"
}
],

```

Imported from Jira [BEAM-6831](https://issues.apache.org/jira/browse/BEAM-6831). Original Jira may contain additional context.
Reported by: pesach.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.