在spark中使用惯用scala

hmmo2u0o  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(313)

我有下面的表达式,

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")

我想把它转换成一个使用数据集api的

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

问题是我不能打电话 createOrReplaceTempView 在这种情况下,构建失败。
我的问题是如何将第一个转换为第二个,并从中创建tempview?

vsikbqxv

vsikbqxv1#

通过使用sparksql函数,您可以一起摆脱sql表达式al

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

如下所示

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

yftpprvb2#

考虑到您有一个名为 pageViews -
使用-

pageViews
      .groupBy("proposal")
      .agg(expr("min(timestamp) AS timestamp"), expr("max(page_view_after) AS page_view_after"))

相关问题