在 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 以及如何查詢所有紐約市的計程車行程

追隨更多!