美文网首页 移动 前端 Python Android Java
Google BigQuery 零基础快速上手

Google BigQuery 零基础快速上手

作者: 不务正业的Yuez | 来源:发表于2016-05-24 02:48 被阅读4425次

吐槽

最近有工作需要分析Reddit的数据。Reddit的数据好处是格式整齐,但是由于每条很小,导致数据的记录条目还是蛮大的。举个例子,我用Solr 6.0建2012到2013年的post的索引,半年的索引建了六七个小时,一年的因为超时没有建立起来。而且,我还只是针对几个特定的域建立索引。

目的

原本计划通过Solr把查询相关的文档都给找出来,建立一个相关文档创建时间的time-series data。结果一年的索引我服务器上都没搭起来,从07年到15年的ts data就更没办法通过这个方式搞定了。

东找西找发现Reddit的数据早就被人上传到了Google BigQuery上建立了表格,可以支持类SQL语句的查询,于是,只好通过这个办法聚合需要的数据的time-series data了。

Hands-on

  1. 首先是注册BigQuery,建立项目,给项目开启BigQuery的API。(这一步有官方文档)
  2. 然后对于响应的项目,生成凭证(credentials),并将凭证在.bash_profile文件中设置为默认。
GOOGLE_APPLICATION_CREDENTIALS=/$Path/key.json
export GOOGLE_APPLICATION_CREDENTIALS
  1. 在python代码中就可以调用了
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from oauth2client.client import GoogleCredentials
import pandas as pd
# 从环境变量中获取默认credentials
credentials = GoogleCredentials.get_application_default()
# 构建与BigQuery API交互的服务对象
bigquery_service = build('bigquery', 'v2', credentials=credentials)
# ~~~构建query~~~
# 用pandas提供的结构直接将查询结果读入data frame中,并存入.csv文件
df = pd.io.gbq.read_gbq(query_data_string, project_id=project_id)
output_file_name = query_id + ".csv"
df.to_csv(output_file_name, sep='\t', encoding='utf-8')
print "Finished: " + output_file_name

其中,query_data_string是一个类SQL语句,关于Query的语句的支持可以参考query reference.

相关链接可以参考

  1. MAPPING NYC TAXI DATA
  2. How to Analyze Every Reddit Submission and Comment, in Seconds, for Free
  3. Analyzing 50 billion Wikipedia pageviews in 5 seconds (beginner tutorial)
  4. Analyzing Hacker News data
  5. Having fun with BigQuery and real-time Reddit data
  6. USING BIGQUERY WITH REDDIT DATA

相关文章

网友评论

    本文标题:Google BigQuery 零基础快速上手

    本文链接:https://www.haomeiwen.com/subject/qhrmrttx.html