适用于 Google BigQuery
此连接器可以作为联合目录注册到 Glue Data Catalog。此连接器支持 Lake Formation 中在目录、数据库、行和标签级别定义的数据访问控制。此连接器使用 Glue 连接将配置属性集中保存到 Glue 中。
先决条件
可以使用 Athena 控制台或 AWS Serverless Application Repository 将该连接器部署到您的 AWS 账户。有关更多信息,请参阅创建数据来源连接或使用 AWS Serverless Application Repository 部署数据来源连接器。
限制
-
Lambda 函数的最大超时值为 15 分钟。每次拆分都会在 BigQuery 上执行一次查询,并且必须有足够的时间来存储结果,以便 Athena 读取。如果 Lambda 函数超时,查询将失败。
-
Google BigQuery 区分大小写。连接器尝试更正数据集名称、表名称和项目 ID。这很有必要,因为 Athena 所有元数据均采用小写形式。这些更正对 Google BigQuery 进行了许多额外的调用。
-
不支持 Binary 数据类型。
-
由于 Google BigQuery 的并发和配额限制,连接器可能会遇到 Google 配额限制问题。为了避免这些问题,请尽可能多地向 Google BigQuery 施加限制。有关 BigQuery 配额的信息,请参阅 Google BigQuery 文档中的 配额和限制
。
参数
使用本节中的参数来配置 Google BigQuery 连接器。
我们建议您使用 Glue 连接对象来配置 Google BigQuery 连接器。要执行此操作,请将 Google BigQuery 连接器 Lambda 的 glue_connection
环境变量设置为要使用的 Glue 连接的名称。
Glue 连接属性
使用以下命令来获取 Glue 连接对象的架构。此架构包含可用于控制连接的所有参数。
aws glue describe-connection-type --connection-type BIGQUERY
Lambda 环境属性
glue_connection – 指定与联合连接器关联的 Glue 连接的名称。
拆分与视图
由于 BigQuery 连接器使用 BigQuery 存储读取 API 来查询表,而 BigQuery 存储 API 不支持视图,所以该连接器使用具有单个视图拆分功能的 BigQuery 客户端。
性能
为了查询表,BigQuery 连接器使用了 BigQuery 存储读取 API,该 API 使用基于 RPC 的协议,支持快速访问 BigQuery 托管存储。有关 BigQuery 存储读取 API 的更多信息,请参阅 Google Cloud 文档中的使用 BigQuery 存储读取 API 读取表格数据
选择列的子集可以显著减少查询运行时及扫描的数据。随着并发增加,连接器容易出现查询失败,并且通常是慢速连接器。
Athena Google BigQuery 连接器执行谓词下推,以减少查询扫描的数据。LIMIT
子句、ORDER BY
子句、简单谓词和复杂表达式将下推到连接器,以减少扫描数据量并缩短查询执行的运行时间。
LIMIT 子句
LIMIT N
语句用于减少查询扫描的数据量。LIMIT N
下推时,连接器仅向 Athena 返回 N
行。
前 N 个查询
前 N
个查询用于指定结果集的顺序以及返回的行数限值。您可以使用此类查询确定数据集的前 N
个最大值或前 N
个最小值。前 N
个查询下推时,连接器仅向 Athena 返回 N
个已排序行。
Predicates
谓词是 SQL 查询的 WHERE
子句中的表达式,其评估结果为布尔值并根据多个条件筛选行。Athena Google BigQuery 连接器可以组合这些表达式并将其直接推送到 Google BigQuery,以增强功能并减少扫描数据量。
以下 Athena Google BigQuery 连接器运算符支持谓词下推:
-
布尔值:AND、OR、NOT
-
相等:EQUAL、NOT_EQUAL、LESS_THAN、LESS_THAN_OR_EQUAL、GREATER_THAN、GREATER_THAN_OR_EQUAL、IS_DISTINCT_FROM、NULL_IF、IS_NULL
-
算术:ADD、SUBTRACT、MULTIPLY、DIVIDE、MODULUS、NEGATE
-
其他:LIKE_PATTERN、IN
组合下推示例
要增强查询功能,组合下推类型,如以下示例所示:
SELECT *
FROM my_table
WHERE col_a > 10
AND ((col_a + col_b) > (col_c % col_d))
AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%')
ORDER BY col_a DESC
LIMIT 10;
传递查询
Google BigQuery 连接器支持传递查询。传递查询使用表函数将完整查询下推到数据来源来执行查询。
要在 Google BigQuery 中执行传递查询,可以使用以下语法:
SELECT * FROM TABLE(
system.query(
query => 'query string
'
))
以下示例查询将查询下推到 Google BigQuery 中的数据来源。该查询选择了 customer
表中的所有列,将结果限制为 10。
SELECT * FROM TABLE(
system.query(
query => 'SELECT * FROM customer LIMIT 10'
))
许可证信息
Amazon Athena Google BigQuery 连接器项目已获得 Apache-2.0 许可证
使用此连接器,即表示您确认包含第三方组件(这些组件的列表可在此连接器的 pom.xml
其他资源
有关此连接器的更多信息,请访问 GitHub.com 上的相应站点