如何为 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 中的字符?

使用 JS 的服务帐户调用 Google bigquery

如何为每一行使用带有 bigquery 流插入的插入 ID?

BigQuery - 如何为我的查询使用槽

如何为 BigQuery 中的 GA 数据创建基于页面和事件的转化渠道

如何为 BigQuery 表中的记录生成唯一键值?