【问题标题】:Whats the motivation behind implementing BigQuery UDFs as map in mapreduce?在 mapreduce 中实现 BigQuery UDF 作为地图的动机是什么?
【发布时间】:2015-10-30 10:36:24
【问题描述】:

Google BigQuery 现在支持像 mapreduce 中的映射器一样工作的 UDF。

BigQuery 支持用 JavaScript 编写的用户定义函数 (UDF)。 UDF 类似于 MapReduce 中的“Map”函数:它将单行作为输入并产生零或多行作为输出。输出可能具有与输入不同的架构。

来自https://cloud.google.com/bigquery/user-defined-functions

在行上实现 UDF 而不是允许在列/字段上作为纯函数工作的 UDF 背后的动机是什么,例如 UDF 在 hive https://cwiki.apache.org/confluence/display/Hive/HivePlugins 中的工作方式。

我想您可以将任何适用于列的 UDF(如 hive UDF)表示为适用于行的 UDF(BigQuery UDF),但反之则不行。这可以通过定义一个 UDF(在 BigQuery 中)来实现,该 UDF 具有与数据集相同的输入和输出架构以及刚刚传递的所有值,但您希望将函数应用到的字段。

如果您想将相同的函数应用于具有不同架构的不同数据集,这当然很麻烦。请帮我理解。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    目前在 BigQuery 中实现 UDF 只是第一步。正如您所注意到的 - 如果您希望能够处理嵌套和重复的结构,这是最通用的方式,但是当您只需要简单的标量值时它会变得很麻烦。预计该领域的未来会有所改进,使简单的 UDF 变得简单。

    【讨论】:

    • 我已经等不及可以开始使用 dateint(timestamp) 而不是 year(timestamp) * 10000 + month(timestamp) * 100 + day(timestamp) 的那一天了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    相关资源
    最近更新 更多