在 5 秒内分析 500 亿维基百科的综合浏览量(BigQuery 初学者教程)
嗨,大家好! 这是我喜欢为 BigQuery 开始的人们运行的演示。所以让我们运行一些简单的查询来帮助你入门。
建立
你需要一个 Google Cloud 项目:
- 转到 http://bigquery.cloud.google.com/ 。
- 如果它告诉你创建项目,请按照链接创建项目,然后创建项目。
- 回到 http://bigquery.cloud.google.com/ 。
笔记:
- 你不需要信用卡。每个人每个月都可获得 1TB 的免费分析。
- BigQuery 每个查询收费。在运行查询之前,你将能够看到每个查询的成本。
我们来查询一下
- 在 https://bigquery.cloud.google.com/table/fh-bigquery:wikipedia.pagecounts_201505 上查找 2015 年 5 月的综合浏览量
注意 :Google 使用最高安全标准(PCI,ISO,HIPAA,SOC 等)保护你的数据,但如果你愿意,也可以轻松共享数据 - 就像我在这里所做的那样。 https://cloud.google.com/security/
-
该表有 5 列: datehour 语言标题请求 content_size 。他们基本上说这个语言的维基百科页面在这个时刻有这么多请求。
-
该表有近 60 亿行(379 GB 的数据)。
-
要了解维基百科在 5 月期间有多少次综合浏览量,你可以累计所有 60 亿行请求:
SELECT SUM(requests) FROM [fh-bigquery:wikipedia.pagecounts_201505]
-
你注意到它有多快吗? (1.8 秒过去了,为我处理了 43.1 GB)
-
让我们做一些更复杂的事情。让我们在这 60 亿行上运行正则表达式。这有多快?
SELECT SUM(requests) req, title FROM [fh-bigquery:wikipedia.pagecounts_201505] WHERE REGEXP_MATCH(title, 'Red.*t') GROUP BY title ORDER BY req DESC LIMIT 100
-
你有多快?你在结果中找到了 Reddit 吗?
成本分析
-
最后一个查询处理了 269 GB:超过每月免费 TB 的四分之一。为什么?
-
BigQuery 查看你在查询中处理的列。 ’title’是一个很大的专栏 - 它包含文字。 ‘requests’列只有 43.1 GB。
-
要使你的免费太字节最后,请将数据提取到较小的表。例如,我有一张只有 65,000 英文维基百科页面浏览量的表格。相同的查询仅处理 1.18 GB - 你可以每月免费运行几乎 1000 个。
SELECT SUM(requests) req, title FROM [fh-bigquery:wikipedia.pagecounts_201408_en_top65k] WHERE REGEXP_MATCH(title, 'Red.*t') GROUP BY title ORDER BY req DESC LIMIT 100
-
你不能使用每月免费太字节创建表 - 它仅用于分析。为新的 Google Cloud Platform 帐户激活 300 美元免费,或者请我在这里为你提取摘录。我很乐意这样做。
将数据加载到 BigQuery 中
要将数据加载到 BigQuery 中,你需要激活项目的计费 - 尝试使用免费的 300 美元新帐户。
-
在项目中创建数据集以将数据加载到: https : //i.imgur.com/FRClJ3K.jpg 。
-
查找维基百科共享的原始日志,网址为 https://dumps.wikimedia.org/other/pagecounts-raw/
-
将其中一个文件输入你的计算机,例如 https://dumps.wikimedia.org/other/pagecounts-raw/2015/2015-06/pagecounts-20150616-160000.gz
-
安装’bq’工具。 https://cloud.google.com/bigquery/bq-command-line-tool
-
将其加载到 BigQuery 中:
bq load -F" " --quote "" YourProjectName:DatasetName.pagecounts_20150616_16 pagecounts-20150616-160000.gz language,title,requests:integer,content_size:integer
-
等几分钟。在你等待的时候,让我解释一下:这不是 CSV 文件,它是一个空格分隔文件(-F“”),它不使用引号(–quote“”),我们在数据集中选择一个目标表在你的项目中(记得首先创建数据集),我们选择要加载的文件,并定义此文件具有的 4 列。
-
请注意,BigQuery 将很乐意提取 .gz 文件,最大可达一定大小。对于非常大的文件,最好先解压缩它们并将它们放入 Google 云端存储中。这就是我用 / u / Stuck_In_The_Matrix 编译的 reddit 评论所做的。这些文件很大,但 BigQuery 在 2 分钟左右就收到了它们。
学到更多
准备好更高级的例子吗?了解如何查询 Reddit 以及如何查询所有纽约市的出租车行程 。
追随更多!
- 订阅 / r / bigquery (有关更多链接,请参阅侧栏)。
- 跟我来 https://twitter.com/felipehoffa