从 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的主要内容,如果未能解决你的问题,请参考以下文章

在写入时使用 Flume 将日志文件摄取到 HDFS

从本地数据源到红移的连续数据摄取

Python - 运行多个使用多处理的 python 脚本有时会影响性能和错误

将平面数据文件从边缘设备摄取到 HDFS 并进行处理

数据摄取:将动态文件从 S3 加载到 Snowflake

如何使用 Apache Apex 将数据从 DB2 批量摄取到 Vertica