如何为 Google BigQuery JDBC 驱动程序指定区域位置?
Posted
技术标签:
【中文标题】如何为 Google BigQuery JDBC 驱动程序指定区域位置?【英文标题】:How to specify a regional location for Google BigQuery JDBC driver? 【发布时间】:2018-07-02 23:03:41 【问题描述】:我正在尝试为SIMBA BigQuery JDBC driver 指定asia-northeast1
(日本)位置,以便在查询该位置的数据集时使用。对于区域位置,您必须在查询时指定您的位置:
如果您的数据位于美国或欧盟多区域以外的位置,您必须在执行加载数据、查询数据和导出数据等操作时指定该位置。 Specifying your location
我尝试将我的查询字符串子名设置为:
//https://www.googleapis.com/bigquery/v2;ProjectId=mybqproject;OAuthType=3;Location=asia-northeast1
它在 Clojure 中,所以这里的全部内容都是为了上下文,但同样的原则应该适用于任何 JDBC 连接。
(clojure.java.jdbc/get-connection
:classname "com.simba.googlebigquery.jdbc42.Driver"
:subprotocol "bigquery"
;; OAuthType=3 means use Application Default Credentials
:subname "//https://www.googleapis.com/bigquery/v2;ProjectId=mybqproject;OAuthType=3")
似乎没有拾取 Location 属性(我只是猜测在这里使用Location
,我在文档中看不到任何内容)。我能够成功连接到美国多区域中的数据集并对其进行查询,因此配置属性是正确的,但不是日本的。当我尝试在日本查询数据集时,出现此错误:
CompilerException java.sql.SQLException: [Simba][BigQueryJDBCDriver](100032) Error executing query job. Message: 404 Not Found
"code" : 404,
"errors" : [
"domain" : "global",
"message" : "Not found: Dataset mybqproject:mybqtable",
"reason" : "notFound"
],
"message" : "Not found: Dataset mybqproject:mybqtable"
,
当我没有明确设置日本位置时,我也会在 BigQuery SQL 控制台中收到此错误。这表明没有在日本位置搜索此表。
使用 Google BigQuery SIMBA JDBC 驱动程序时如何选择日语位置?
【问题讨论】:
【参考方案1】:很遗憾,Simba JDBC 驱动程序尚不支持此功能,因此您将无法以这种方式使用它。
https://www.simba.com/products/BigQuery/doc/JDBC_InstallGuide/content/jdbc/bq/options/intro-general.htm(处理位置未列出)
如果可能,您可以改用 BigQuery API 并设置字段jobReference.location
。使用查询作业配置将其设置为您想要的处理位置。 注意:这里标记为Experimental
,所以要小心。
https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.query
【讨论】:
谢谢,我认为在 JDBC 驱动程序中设置该属性(还没有?)。 是的,我认为 Simba 驱动程序尚不支持它。我会更新我的答案。以上是关于如何为 Google BigQuery JDBC 驱动程序指定区域位置?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Google BigQuery 转义 JavaScript UDF 中的字符?
如何为每一行使用带有 bigquery 流插入的插入 ID?