【发布时间】:2018-06-12 11:05:20
【问题描述】:
我想使用相同的函数来解析两种不同技术中的事件:Goolge Bigquery 和 DataFlow。有没有一种语言我可以做到这一点?如果没有,谷歌是否计划很快支持一项?
背景:其中一些解析很复杂(例如,应用自定义 URL 提取规则、从用户代理中提取信息),但计算量不高,也不涉及将事件加入任何其他大型查找表。因为解析可能很复杂,所以我想只用一种语言编写我的解析逻辑并在我需要的任何地方运行它:有时在 BigQuery 中,有时在 DataFlow 等其他环境中。我想避免用不同的语言编写相同的复杂解析器/提取器,因为这可能会导致错误和不一致。
我知道 BigQuery 支持 JavaScript UDF。有没有在 Google Cloud DataFlow 上运行 javascript 的干净方法? BigQuery 有朝一日会支持其他语言的 UDF 吗?
【问题讨论】:
-
这些事件的格式是什么? JSON?遵循某种模式的字符串?不清楚为什么解析的逻辑只能存在于一种语言中。
-
好点@ElliottBrossard,我在问题中添加了一些额外的上下文来澄清我的动机。假设事件采用 NGINX 网络服务器日志的形式,但我认为这不太重要(我会面临任何格式的类似要求,因为我超越了基本解析和应用提取规则来丰富事件)。
-
我不认为它一定要复杂且难以维护。以某种与语言无关的方式为各种提取设置输入和预期输出,例如文本文件,然后即使提取以多种语言实现,您也可以确保兼容性。根据您的操作,您可以使用 RE2(正则表达式)进行提取。您可以通过 Java 和 BigQuery 中的 SQL 使用 RE2。
标签: google-bigquery google-cloud-dataflow