What happened?
Description
When using the BigQuery emulator in combination with BigQueryIO.read() in Apache Beam (Java), the pipeline fails with the following error when running locally with DirectRunner:
java.lang.IllegalArgumentException: BigQueryIO.Read needs a GCS temp location to store temp files. This can be set with option --tempLocation.
This makes it impossible to write integration tests against the emulator using BigQueryIO.read() unless a (fake) GCS-compatible path is provided—even though the emulator does not support or require real GCS interaction.
To Reproduce
Steps to reproduce the behavior:
- Start BigQuery emulator (e.g., [goccy/bigquery-emulator](https://github.com/goccy/bigquery-emulator))
- Create a Beam pipeline that reads using
BigQueryIO.readTableRows().from(...)
- Set
bigQueryEndpoint to point to the emulator
- Omit
tempLocation (or use a local one)
- Run with
DirectRunner
Expected behavior
The pipeline should be able to run against the emulator.
Environment:
- Beam version:
2.63.0 (also affects earlier)
- Runner:
DirectRunner
- Java SDK
- Emulator:
ghcr.io/goccy/bigquery-emulator
Issue Priority
Priority: 2 (default / most bugs should be filed as P2)
Issue Components
What happened?
Description
When using the BigQuery emulator in combination with
BigQueryIO.read()in Apache Beam (Java), the pipeline fails with the following error when running locally withDirectRunner:This makes it impossible to write integration tests against the emulator using
BigQueryIO.read()unless a (fake) GCS-compatible path is provided—even though the emulator does not support or require real GCS interaction.To Reproduce
Steps to reproduce the behavior:
BigQueryIO.readTableRows().from(...)bigQueryEndpointto point to the emulatortempLocation(or use a local one)DirectRunnerExpected behavior
The pipeline should be able to run against the emulator.
Environment:
2.63.0(also affects earlier)DirectRunnerghcr.io/goccy/bigquery-emulatorIssue Priority
Priority: 2 (default / most bugs should be filed as P2)
Issue Components