【问题标题】:BigQuery: "Clustering encountered a key that is longer than"BigQuery:“集群遇到的键长于”
【发布时间】:2018-08-18 00:46:05
【问题描述】:

在对我的 Wikipedia pageviews 表进行聚类时出现错误:

集群遇到的密钥长度超过允许的最大限制 1024 字节。

上下文:https://medium.com/google-cloud/bigquery-optimized-cluster-your-tables-65e2f684594b

(我正在聚类

CREATE TABLE `fh-bigquery.wikipedia_v3.pageviews_2017`
PARTITION BY DATE(datehour)
CLUSTER BY wiki, title
...

)

【问题讨论】:

  • 作为仅供参考:据我了解 - 在执行最近引入的 1KB 长度时发现了一个错误。所以,从现在开始,它被禁用,直到它被修复

标签: google-bigquery clustered-index


【解决方案1】:

当集群表 BigQuery 的键限制为 1KB 时。

您可以通过更改插入代码来解决示例表的问题,以便截断任何太长的条目。

例如,而不是:

INSERT INTO `fh-bigquery.wikipedia_v3.pageviews_2018` (datehour, wiki, title, views)
SELECT datehour, wiki, title, views

用以下方法截断可能很长的标题:

INSERT INTO `fh-bigquery.wikipedia_v3.pageviews_2018` (datehour, wiki, title, views)
SELECT datehour, wiki, SUBSTR(title, 0, 300) title, views

如果您继续遇到错误,请注意某些格式错误的字符串可能比SUBSTR() 看到的长度更长。过滤掉那些:

WHERE BYTE_LENGTH(title) < 300

【讨论】:

  • 得说我喜欢看到 BQ 以它的速度发展和创新 :)!
  • 我怀疑不是标题“格式错误”,而是 SUBSTR 在 Unicode 符文(字符)上运行,并且集群限制以字节为单位。因此,具有双/三宽字符(许多汉字、重音字符、表情符号)的标题将属于这种情况。
  • 在我的具体情况下,它是格式错误的字符串(来自现实生活日志)
  • 我在做CLUSTER BY wiki, title,所以我必须确保BYTE_LENGTH(wiki+title) 低于限制。
  • 您知道 BigQuery 是否正在努力扩展此限制@FelipeHoffa?
猜你喜欢
  • 2021-01-25
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多