代码之家  ›  专栏  ›  技术社区  ›  turtlemonvh

如何在spark sql中使用自定义类型安全聚合器

  •  1
  • turtlemonvh  · 技术社区  · 8 年前

    Spark文档描述了如何创建 untyped user defined aggregate function ( code )(又名udaf)和 strongly-typed aggregator ( code )(又名 org.apache.spark.sql.expressions.Aggregator )中。

    我知道你可以通过 spark.udf.register("udafName", udafInstance) ,然后像 spark.sql("SELECT udafName(V) as aggV FROM data") 是的。

    在sql中也有使用聚合器的方法吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   user10010023    8 年前

    不完全是 Aggregator api是专门为“强”类型设计的 Datasets 记住。你会注意到,这不需要 Columns 但总是对整个记录对象进行操作。

    这实际上不适合SQL处理模型:

    • 在sql中,您总是操作 Dataset[Row] 是的。没什么用处 聚合器 是的。
    • 操作应用于列,而 聚合器 完成 Row 是的。

    用于可以创建的sql api UserDefinedAggregateFunction 可以使用 standard methods 是的。

    推荐文章