首页 > 解决方案 > 在 Spark 中使用惯用的 Scala

问题描述

我有以下表达,

val pageViews = spark.sql(
      s"""
         |SELECT
         |  proposal,
         |  MIN(timestamp) AS timestamp,
         |  MAX(page_view_after) AS page_view_after
         |FROM page_views
         |GROUP BY proposalId
         |""".stripMargin
    ).createOrReplaceTempView("page_views")

我想把它转换成一个使用 Dataset API

val pageViews = pageViews.selectExpr("proposal", "MIN(timestamp) AS timestamp", "MAX(page_view_after) AS page_view_after").groupBy("proposal")

问题是我不能调用createOrReplaceTempView这个 - 构建失败。

我的问题是如何将第一个转换为第二个并从中创建一个 TempView ?

标签: scalaapache-sparkapache-spark-sql

解决方案


您可以使用 Spark Sql 的函数一起摆脱 SQL 表达式

import org.apache.spark.sql.functions._

如下

pageViews
      .groupBy("proposal")
      .agg(max("timestamp").as("timestamp"),max("page_view_after").as("page_view_after"))
`


推荐阅读