在 bigquery 中创建非常大 table 的 id 的成对组合
Creating pairwise combination of ids of a very large table in bigquery
我有一个非常大的 table ID(字符串),它有 424,970 行,只有一列。
我正在尝试在新 table 中创建这些 ID 的组合。创建那个 table 的动机可以在这个 question.
中找到
我尝试了以下查询来创建成对组合 table:
#standardSQL
SELECT
t1.id AS id_1,
t2.id AS id_2
FROM
`project.dataset.id_vectors` t1
INNER JOIN
`project.dataset.id_vectors` t2
ON
t1.id < t2.id
但是查询在 15 分钟后失败,错误信息如下:
Query exceeded resource limits. 602467.2409093559 CPU seconds were used, and this query must use less than 3000.0 CPU seconds. (error code: billingTierLimitExceeded)
是否有任何解决方法 运行 查询并获得所需的输出 table 以及所有 ID 组合?
您可以尝试将您的 table T 拆分为 2 个较小的 tables T1 和 T2,然后为每个较小的 tables T1:T1 执行 4 个连接, T1:T2、T2:T1、T2:T2,然后合并结果。这将等同于将 T 与其自身连接起来。如果仍然失败,请尝试将其分解成更小的 tables.
或者将 maximumBillingTier
设置为更高的值 https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs。
configuration.query.maximumBillingTier - Limits the billing tier for
this job. Queries that have resource usage beyond this tier will fail
(without incurring a charge). If unspecified, this will be set to your
project default.
如果使用Java,可以在JobQueryConfiguration
中设置。 UI 控制台目前不支持此配置 属性。
要拆分 table,您可以使用 BigQuery 中的 FARM_FINGERPRINT 函数。例如。第一部分将有一个过滤器:
where mod(abs(farm_fingerprint(id)), 10) < 5
第二部分将过滤:
where mod(abs(farm_fingerprint(id)), 10) >= 5
我有一个非常大的 table ID(字符串),它有 424,970 行,只有一列。
我正在尝试在新 table 中创建这些 ID 的组合。创建那个 table 的动机可以在这个 question.
中找到我尝试了以下查询来创建成对组合 table:
#standardSQL
SELECT
t1.id AS id_1,
t2.id AS id_2
FROM
`project.dataset.id_vectors` t1
INNER JOIN
`project.dataset.id_vectors` t2
ON
t1.id < t2.id
但是查询在 15 分钟后失败,错误信息如下:
Query exceeded resource limits. 602467.2409093559 CPU seconds were used, and this query must use less than 3000.0 CPU seconds. (error code: billingTierLimitExceeded)
是否有任何解决方法 运行 查询并获得所需的输出 table 以及所有 ID 组合?
您可以尝试将您的 table T 拆分为 2 个较小的 tables T1 和 T2,然后为每个较小的 tables T1:T1 执行 4 个连接, T1:T2、T2:T1、T2:T2,然后合并结果。这将等同于将 T 与其自身连接起来。如果仍然失败,请尝试将其分解成更小的 tables.
或者将 maximumBillingTier
设置为更高的值 https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs。
configuration.query.maximumBillingTier - Limits the billing tier for this job. Queries that have resource usage beyond this tier will fail (without incurring a charge). If unspecified, this will be set to your project default.
如果使用Java,可以在JobQueryConfiguration
中设置。 UI 控制台目前不支持此配置 属性。
要拆分 table,您可以使用 BigQuery 中的 FARM_FINGERPRINT 函数。例如。第一部分将有一个过滤器:
where mod(abs(farm_fingerprint(id)), 10) < 5
第二部分将过滤:
where mod(abs(farm_fingerprint(id)), 10) >= 5