BigQuery 行限制

4

谷歌表示,BigQuery可以处理数十亿行数据。

对于我的应用程序,我估计需要处理2亿*1000行数据,远远超过数十亿行。

我可以将数据分成每个分区200,000,000行,但是在BigQuery中,唯一支持的方式似乎是使用不同的表。(如果我理解错误,请纠正我)

总数据大小约为2TB。

我在示例中看到了一些大型数据集,但所有行都少于十亿行。

BigQuery能否支持单个表格处理我所处理的行数?

如果不能,除了使用多个表格之外,我还能以其他方式进行分区吗?

2个回答

9

以下应该可以回答你的问题

我对其中一个数据集进行了运行
如您所见,表格大小接近10TB,大约有13-16亿行

SELECT 
  ROUND(size_bytes/1024/1024/1024/1024) as TB, 
  row_count as ROWS
FROM [mydataset.__TABLES__] 
ORDER BY row_count DESC
LIMIT 10

我认为我们目前处理过的最大表格至少达到了 50-60 亿,并且一切都按预期工作。

Row   TB        ROWS     
1   10.0    1582903965   
2   11.0    1552433513   
3   10.0    1526783717   
4    9.0    1415777124   
5   10.0    1412000551   
6   10.0    1410253780   
7   11.0    1398147645   
8   11.0    1382021285   
9   11.0    1378284566   
10  11.0    1369109770   

很有前途,但我正在处理比之前多两个数量级的行。 - BAR
忘了提一下 - 这些是按日分区的数据/表格 - 每天一个表格。对于某些分析,我们需要查询远远不止一个表格。显而易见的是,BigQuery是列式存储,因此您可以通过仅使用实际需要的字段来控制查询量。 - Mikhail Berlyant
我的数据也是按天分区的。我可以使用另一个索引来增加分区。你是如何实现分区的?通过使用不同的表吗? - BAR
类似于此,每天都进入新的日表 - logname_YYYYMMDD。 - Mikhail Berlyant
BigQuery - 用于活跃的可查询数据。 - Mikhail Berlyant
显示剩余2条评论

4

简短回答:是的,BigQuery可以很好地处理这个问题,即使您将所有数据放在单个表中。

如果您确实想要对数据进行分区,则目前唯一的方法是明确地将数据存储在多个表中。如果您经常仅查询数据的子集,则可以考虑这样做以减少账单。许多用户按日期对其数据进行分区,并使用表通配符函数在这些分区表的子集上编写查询。


这显然是一个优化问题,但我发现它的解决空间非常有限,主要集中在将要查询的数据量以及如何使查询批处理为10MB。对于每月花费10k以上的公司来说,进行优化是值得的。 - BAR
使用@BAR存储您的2TB数据,每月仅需40美元。为什么说它每月要10k+?将您的数据放入BigQuery中几天,看看价格是多少,然后您会惊讶地发现它是多么低廉。 - Pentium10
@Pentium10 不,我没有说那些话。我在谈论的是查询成本而不是存储成本。我也没有花费10k,但对于一家值得优化的公司来说,这是值得的。 - BAR
1
@BAR,你的使用情境是什么?BigQuery的查询引擎和定价结构是针对扫描大量数据的分析查询进行优化的。如果您正在进行点查找并且目标是提取单个记录,则可以尝试使用像Google Datastore这样专为事务工作负载而设计的系统。 - Jeremy Condit
@JeremyCondit,我想要灵活地在必要时运行小的结果查找。有时是为了测试。我的意思是,获取数据真的很便宜,为什么他们会收费10MB,而实际返回的数据却少了10000倍(!!)?这使得执行某些大量查询非常昂贵 - 对于我的用例来说是一个致命问题 - 即使这不是我的主要查询类型。 - BAR
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接