在 5 秒内分析 500 亿维基百科的综合浏览量(BigQuery 初学者教程)

嗨,大家好! 这是我喜欢为 BigQuery 开始的人们运行的演示。所以让我们运行一些简单的查询来帮助入门。

建立

你需要一个 Google Cloud 项目:

  1. 转到 http://bigquery.cloud.google.com/
  2. 如果它告诉你创建项目,请按照链接创建项目,然后创建项目。
  3. 回到 http://bigquery.cloud.google.com/

笔记:

  • 你不需要信用卡。每个人每个月都可获得 1TB 的免费分析。
  • BigQuery 每个查询收费。在运行查询之前,你将能够看到每个查询的成本。

我们来查询一下

  1. https://bigquery.cloud.google.com/table/fh-bigquery:wikipedia.pagecounts_201505 上查找 2015 年 5 月的综合浏览量

注意 :Google 使用最高安全标准(PCI,ISO,HIPAA,SOC 等)保护你的数据,但如果你愿意,也可以轻松共享数据 - 就像我在这里所做的那样。 https://cloud.google.com/security/

  1. 该表有 5 列: datehour 语言标题请求 content_size 。他们基本上说这个语言的维基百科页面在这个时刻有这么多请求

  2. 该表有近 60 亿行(379 GB 的数据)。

  3. 要了解维基百科在 5 月期间有多少次综合浏览量,你可以累计所有 60 亿行请求:

     SELECT SUM(requests) 
     FROM [fh-bigquery:wikipedia.pagecounts_201505]
    
  4. 你注意到它有多快吗? (1.8 秒过去了,为我处理了 43.1 GB)

  5. 让我们做一些更复杂的事情。让我们在这 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     
    
  6. 你有多快?你在结果中找到了 Reddit 吗?

成本分析

  1. 最后一个查询处理了 269 GB:超过每月免费 TB 的四分之一。为什么?

  2. BigQuery 查看你在查询中处理的列。 ’title’是一个很大的专栏 - 它包含文字。 ‘requests’列只有 43.1 GB。

  3. 要使你的免费太字节最后,请将数据提取到较小的表。例如,我有一张只有 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 
    
  4. 你不能使用每月免费太字节创建表 - 它仅用于分析。为新的 Google Cloud Platform 帐户激活 300 美元免费,或者请我在这里为你提取摘录。我很乐意这样做。

将数据加载到 BigQuery 中

要将数据加载到 BigQuery 中,你需要激活项目的计费 - 尝试使用免费的 300 美元新帐户。

  1. 在项目中创建数据集以将数据加载到: https//i.imgur.com/FRClJ3K.jpg

  2. 查找维基百科共享的原始日志,网址https://dumps.wikimedia.org/other/pagecounts-raw/

  3. 将其中一个文件输入你的计算机,例如 https://dumps.wikimedia.org/other/pagecounts-raw/2015/2015-06/pagecounts-20150616-160000.gz

  4. 安装’bq’工具。 https://cloud.google.com/bigquery/bq-command-line-tool

  5. 将其加载到 BigQuery 中:

     bq load -F" " --quote "" YourProjectName:DatasetName.pagecounts_20150616_16 pagecounts-20150616-160000.gz language,title,requests:integer,content_size:integer
    
  6. 等几分钟。在你等待的时候,让我解释一下:这不是 CSV 文件,它是一个空格分隔文件(-F“”),它不使用引号(–quote“”),我们在数据集中选择一个目标表在你的项目中(记得首先创建数据集),我们选择要加载的文件,并定义此文件具有的 4 列。

  7. 请注意,BigQuery 将很乐意提取 .gz 文件,最大可达一定大小。对于非常大的文件,最好先解压缩它们并将它们放入 Google 云端存储中。这就是我用 / u / Stuck_In_The_Matrix 编译的 reddit 评论所做的。这些文件很大,但 BigQuery 在 2 分钟左右就收到了它们。

学到更多

准备好更高级的例子吗?了解如何查询 Reddit 以及如何查询所有纽约市的出租车行程

追随更多!