如何将事件流式传输到BigQuery?

时间:2016-06-22 09:34:21

标签: google-bigquery

我想向BigQuery添加事件,以便使用ModeAnalytics等服务通过图表查看事件。

我不确定是否掌握了BigQuery的完整概念,也许我对它做出了错误的假设,但我想用它做的是有一种(某种)表"事件"并根据事件名称向其添加事件。

这可能就像"新帐户","用户搜索"等

但我能找到的所有文档都是关于从其他表,csv,json文件等加载大量数据。

我无法找到有关像POST请求这样的事情的文档,其中包含要添加到"事件"表

我该怎么办?

2 个答案:

答案 0 :(得分:2)

您应该考虑使用cloud pubsub。我将创建一个非常简单的云data flow component,它将以流模式托管,并将为GAE提出的每个PubSub事件将"streaming inserts"写入BQ。所以基本上GAE会引发事件,数据流将订阅并从PubSub读取并写入BQ。

如下面的讨论中所述:您还可以在任务队列中编写事件日志并将其在处理程序中出列,然后直接将它们流式传输到BQ。我通常会避免这种情况用于大量生产,因为根据我的经验,这种技术通常会产生持久的效果。额外的实例(因此额外的实例小时),特别是如果您要编写许多事件,但这是一种简单的方法,可以避免数据流和pubsub的使用并保持包含的所有内容。

答案 1 :(得分:1)

我建议稍微阅读BigQuery。你似乎还没有完全掌握它实际上的概念。首先尝试here。想想“利用Google基础设施的强大功能,使用SQL进行大规模可扩展的数据分析”。之后,看看它的streaming API functionality。这允许您通过其RESTful API使用http POST请求插入“事件”。

一旦你了解了这一点,那么有一些解决方案来流式传输数据。你可以直接去BigQuery,但这并不是一个好主意 - 原因很明显。正如varun的回答中提到的,你确实可以联系Pub / Sub&数据流,但我觉得这可能对你想要的东西太多了。

因此,对此的一个常见模式/解决方案是使用队列,并且异步消耗该队列中的事件,并将它们批量推送到BigQuery。这就是我们为许多项目做的事情,它的工作非常好。

您不必使用GAE来实现此目的。您可以使用任何类型的队列,或者只是构建自己的自定义队列。例如,我们使用SQS在AWS上运行我们的一些队列(我们的事件源自在EC2上运行的Apache节点),并且有一个应用程序然后异步使用SQS上的事件。

我们也使用Redis来达到同样的效果。这在生产中运行,可扩展,并为我们处理大约50K事件到BigQuery一分钟。我们的一位工程师写了一篇关于它的博客文章here

因此,正如您所看到的,有很多方法可以为此构建解决方案。但是,基本前提是有一些队列可以异步处理“事件”,并将它们分批推送到BigQuery,然后您可以在那里进行分析并插入BI工具来制作漂亮的图形。此外,您选择什么解决方案取决于您的具体用例,例如你的活动来自哪里?你的技能是什么样的?等

希望这会有所帮助。