从 python 脚本将日志摄取到 bigquery
Posted
技术标签:
【中文标题】从 python 脚本将日志摄取到 bigquery【英文标题】:Ingesting logs into bigquery from a python script 【发布时间】:2012-05-31 08:13:15 【问题描述】:我想在不使用 appengine mapreduce 的情况下将日志从 appengine 应用提取到 bigquery?
【问题讨论】:
那么,具体的编程问题是什么?你有什么问题吗? 我可以使用 OAuth 来访问 BigQuery 并将数据从本地文件发送到 BigQuery 中的表(已创建)。现在,我想使用 Python 将来自应用引擎日志存储的日志发送到 BigQuery 中的一个表。 我看到'log2bq'应用程序使用mapreduce管道将日志摄取到bigquery中,但我不想使用mapreduce。现在我无法弄清楚如何将日志从应用引擎日志存储发送到 bigquery 表。 另外我想将日志直接从应用引擎日志存储发送到 bigquery。我不想先将它们存储到谷歌云存储中,然后将日志从云存储发送到 bigquery。 为了清楚起见,log2bq 实际上并不使用 MapReduce...它使用 Mapper 函数,但不是 Reduce 步骤。另外,我不知道您为什么不想使用 Mapper 来访问 App Engine 日志 - 它极大地简化了您的代码! 【参考方案1】:我们在这里开源了一个将 appengine 日志迁移到 bigquery 的 Java 实现:http://blog.streak.com/2012/07/export-your-google-app-engine-logs-to.html
【讨论】:
【参考方案2】:请参阅 bigquery 文档 here。您可以发布包含要添加到表中的数据的多部分 http 请求。如果您正在进行追加,则无需提供架构。
【讨论】:
:我需要将应用引擎的日志数据发送到 bigquery。我不想将日志存储到本地文件,然后将本地文件上传到 bigquery,而是直接将 appengine 日志发送到 bigquery。 我想知道如何访问 appengine 日志,然后将它们导出到 bigquery。 “本地文件”导入请求不必是本地文件。它只是您在多部分 HTTP POST 请求中发送的数据。如果您有权访问您的 appengine 日志,则可以通过此机制将它们发送到 BigQuery。【参考方案3】:还有一个名为“log2bq”的 Python 运行时实现,它演示了如何将 App Engine 日志提取到 BigQuery:http://code.google.com/p/log2bq/
【讨论】:
【参考方案4】:Google 最近发布了一项 (BETA) 功能,名为“Google Cloud Logging:日志导出” https://cloud.google.com/logging/docs/install/logs_export
他们总结为:
将您的 Google Compute Engine 日志和 Google App Engine 日志导出到 Google Cloud Storage 存储桶、Google BigQuery 数据集、Google Cloud Pub/Sub 主题或三者的任意组合。
我还没有尝试过这项新服务提供的所有功能,但是...
我们最近开始在 Python GAE 项目中使用“将 App Engine 日志流式传输到 BigQuery”功能。这会将我们应用的日志直接发送到 BigQuery,以便在 BigQuery 数据集中提供近乎实时的日志记录。
【讨论】:
以上是关于从 python 脚本将日志摄取到 bigquery的主要内容,如果未能解决你的问题,请参考以下文章