我可以在 BigQuery 和 Google Cloud Dataflow 中使用相同的编程语言吗?

Posted

技术标签:

【中文标题】我可以在 BigQuery 和 Google Cloud Dataflow 中使用相同的编程语言吗?【英文标题】:Can I the same programming language in BigQuery and Google Cloud Dataflow? 【发布时间】:2018-06-12 11:05:20 【问题描述】:

我想使用相同的函数来解析两种不同技术中的事件:Goolge Bigquery 和 DataFlow。有没有一种语言我可以做到这一点?如果没有,谷歌是否计划很快支持一项?

背景:其中一些解析很复杂(例如,应用自定义 URL 提取规则、从用户代理中提取信息),但计算量不高,也不涉及将事件加入任何其他大型查找表。因为解析可能很复杂,所以我想只用一种语言编写我的解析逻辑并在我需要的任何地方运行它:有时在 Bi​​gQuery 中,有时在 DataFlow 等其他环境中。我想避免用不同的语言编写相同的复杂解析器/提取器,因为这可能会导致错误和不一致。

我知道 BigQuery 支持 javascript UDF。有没有在 Google Cloud DataFlow 上运行 javascript 的干净方法? BigQuery 有朝一日会支持其他语言的 UDF 吗?

【问题讨论】:

这些事件的格式是什么? JSON?遵循某种模式的字符串?不清楚为什么解析的逻辑只能存在于一种语言中。 好点@ElliottBrossard,我在问题中添加了一些额外的上下文来澄清我的动机。假设事件采用 nginx 网络服务器日志的形式,但我认为这不太重要(我会面临任何格式的类似要求,因为我超越了基本解析和应用提取规则来丰富事件)。 我不认为它一定要复杂且难以维护。以某种与语言无关的方式为各种提取设置输入和预期输出,例如文本文件,然后即使提取以多种语言实现,您也可以确保兼容性。根据您的操作,您可以使用 RE2(正则表达式)进行提取。您可以通过 Java 和 BigQuery 中的 SQL 使用 RE2。 【参考方案1】:

我们倾向于使用 Java 来操纵 bigquery 作业并解析其结果数据,然后我们也在数据流中这样做。

同样,您可以在编写的 sql 数量与从代码库自动生成的数量以及您对 bigquery 与数据流的依赖程度之间留有余地。 (我们发现,在我们的大量数据中,将尽可能多的初始分组/过滤卸载到 bigquery 中,然后再将其拉入数据流有很大的好处)

【讨论】:

以上是关于我可以在 BigQuery 和 Google Cloud Dataflow 中使用相同的编程语言吗?的主要内容,如果未能解决你的问题,请参考以下文章

Bigquery 和 Google Adwords(添加):国家/地区标签

自动将数据上传到 Google Cloud Storage 和 BigQuery

在 google bigquery 中,如何使用 google python 客户端使用 javascript UDF

Python 2.7 和 GCP Google BigQuery:捕获文件加载错误?

我们可以将 BigQuery 中的数据导入 Google 表格吗?

BigQuery 中的 Google Analytics(分析)数据(timeOnPage 和 searchStartPage)