MySQL 到 Google 大查询

Posted

技术标签:

【中文标题】MySQL 到 Google 大查询【英文标题】:MySQL to Google Big Query 【发布时间】:2016-11-18 01:27:32 【问题描述】:

我有几个基于 Django (python) 的后端 Web 应用程序,我想开始以自动方式将数据输送到 Google Big Query 中。后端的关系数据库是 mysql,这些应用程序不是面向公众的,也不在 Google App Engine 中。

我们已经设置了 Google Apps for Business 以及一个 Google 大数据项目。话虽如此,我可以手动将表转储到 CSV 并导入到 Big Query,但是在将这种数据自动传输到 Google 中是否有一些最佳实践?我翻阅了文档,并没有真正看到任何关于这个问题的权威文章。

任何建议将不胜感激。

感谢阅读

【问题讨论】:

【参考方案1】:

您可以使用 Python 机器人,它通过crontab 在 Linux 上运行。

为了加载到 Google Cloud Platform BigQuery,我使用 pandas_gbq.to_gbq 库:

根据this 或this 创建你的数据框(df)

为了得到Token.json文件:

Create a Google Cloud Platform BigQuery service account.

Load the JSON file:

 from google.oauth2 import service_account
 import pandas as pd
 import pandas_gbq
 DIR = os.path.dirname(os.path.realpath(__file__))
 TOKEN_AUTH = DIR + '/token.json'
 CREDENTIALS = service_account.Credentials.from_service_account_file(TOKEN_AUTH)
 #df is a pandas dataframe
 pandas_gbq.to_gbq(df, '<dataset>.<table_name>', project_id='<project_id>',
                  if_exists=<replace or append> , credentials=CREDENTIALS)

创建令牌后,在 Linux 上安装 crontab 并安排加载机器人任务:

Using crontab to execute script every minute and another every 24 hours

最后,您还可以使用 Apache Airflow(适用于具有 Docker 技能的高级用户)

【讨论】:

【参考方案2】:

最近,WePay 发布了一系列关于他们如何使用 BigQuery 运行分析的文章。他们的第二篇文章重点介绍了他们如何使用 Apache AirFlow 将数据从 MySQL 移动到 BigQuery:

https://wecode.wepay.com/posts/airflow-wepay

正如他们提到的“我们只有一个配置驱动的 ETL DAG 文件。它会动态生成 200 多个 DAG”,以及“最重要的部分是选择块。它定义了我们从 MySQL 中提取哪些列并加载到 BigQuery ”。

查看文章了解更多详情。

【讨论】:

以上是关于MySQL 到 Google 大查询的主要内容,如果未能解决你的问题,请参考以下文章

将 Google 大查询数据下载到 Jupyter 笔记本,但仅捕获 1000 行

GBQexception:如何使用存储在 Google Drive 电子表格中的大查询读取数据

大查询中的Google AdWords转帐:可以更改表格架构吗?

Google App Engine - 大查询 - Python 找不到库 google.cloud

Google 大查询 API 返回“为此项目扫描的免费查询字节过多”

MySQL 查询错误“非法小时值”导致 Google Apps 脚本中出现循环和写入问题