Bigquery Api Java 客户端间歇性地返回错误结果
Bigquery Api Java client intermittently returning bad results
我正在使用大查询 java 客户端执行一些较长的 运行 查询。
我构建了一个大查询作业并像这样执行
val queryRequest = new QueryRequest().setQuery(query)
val queryJob = client.jobs().query(ProjectId, queryRequest)
queryJob.execute()
我面临的问题是对于同一个查询,客户端 returns 在作业完成之前,即结果中的行数为零。
我尝试打印响应,它显示
{"jobComplete":false,"jobReference":{"jobId":"job_bTLRGrw5_xR26i9Li3a9EQvuA6c","projectId":"analytics-production"},"kind":"bigquery#queryResponse"}
从这里我可以看出工作还没有完成。为什么客户 return 在工作完成之前?
在构建客户端时,我使用 HttpRequestInitializer
并在初始化方法中提供超时参数。
override def initialize(request: HttpRequest): Unit = {
request.setConnectTimeout(...)
request.setReadTimeout(...)
}
尝试为超时提供高值,如 240 秒等。但没有成功。行为仍然相同。它间歇性地失败。
确保在 Bigquery 请求正文而非 HTTP 对象上设置超时。
val queryRequest = new QueryRequest().setQuery(query).setTimeoutMs(10000) //10 seconds
参数是timeoutMs
。这记录在这里:https://cloud.google.com/bigquery/docs/reference/v2/jobs/query
另请阅读有关此字段的文档:在请求超时和 returns 之前等待查询完成的时间(以毫秒为单位)。请注意,这只是请求超时,而不是查询超时。 如果查询到 运行 的时间比超时值长,调用 returns 没有任何结果并且 'jobComplete' 标志设置为 false。 你可以调用 GetQueryResults() 等待查询完成并读取结果。默认值为 10000 毫秒(10 秒)。
这里有更多关于同步查询的信息
https://cloud.google.com/bigquery/querying-data#syncqueries
我正在使用大查询 java 客户端执行一些较长的 运行 查询。
我构建了一个大查询作业并像这样执行
val queryRequest = new QueryRequest().setQuery(query)
val queryJob = client.jobs().query(ProjectId, queryRequest)
queryJob.execute()
我面临的问题是对于同一个查询,客户端 returns 在作业完成之前,即结果中的行数为零。
我尝试打印响应,它显示
{"jobComplete":false,"jobReference":{"jobId":"job_bTLRGrw5_xR26i9Li3a9EQvuA6c","projectId":"analytics-production"},"kind":"bigquery#queryResponse"}
从这里我可以看出工作还没有完成。为什么客户 return 在工作完成之前?
在构建客户端时,我使用 HttpRequestInitializer
并在初始化方法中提供超时参数。
override def initialize(request: HttpRequest): Unit = {
request.setConnectTimeout(...)
request.setReadTimeout(...)
}
尝试为超时提供高值,如 240 秒等。但没有成功。行为仍然相同。它间歇性地失败。
确保在 Bigquery 请求正文而非 HTTP 对象上设置超时。
val queryRequest = new QueryRequest().setQuery(query).setTimeoutMs(10000) //10 seconds
参数是timeoutMs
。这记录在这里:https://cloud.google.com/bigquery/docs/reference/v2/jobs/query
另请阅读有关此字段的文档:在请求超时和 returns 之前等待查询完成的时间(以毫秒为单位)。请注意,这只是请求超时,而不是查询超时。 如果查询到 运行 的时间比超时值长,调用 returns 没有任何结果并且 'jobComplete' 标志设置为 false。 你可以调用 GetQueryResults() 等待查询完成并读取结果。默认值为 10000 毫秒(10 秒)。
这里有更多关于同步查询的信息
https://cloud.google.com/bigquery/querying-data#syncqueries