【问题标题】:How to extract week day as a number from a Spark dataframe with the Scala API如何使用 Scala API 从 Spark 数据框中提取工作日作为数字
【发布时间】:2020-07-19 19:10:11
【问题描述】:

我有一个日期列,它是 2017-01-01 12:15:43 时间戳格式的数据框中的字符串。

现在我想使用数据框而不是 spark sql 从该列中获取工作日编号(1 到 7)。

如下图

df.select(weekday(col("colname")))

我在 python 和 sql 中找到了一个,但在 scala 中没有。任何人都可以帮助我吗

在 sqlcontext 中

sqlContext.sql("select date_format(to_date('2017-01-01'),'W') as week")

【问题讨论】:

  • Scala 和 Python 代码将基本相同。您可以从字面上复制并粘贴到另一个(不包括作业)。
  • 我试图转换它但没有工作
  • 这些 QA 往往会出现在 google 搜索 pyspark 解决方案中。对于其他同样在这里绊倒的人。格式代码见pyspark.sql.functions.date_formatsimple date format

标签: scala apache-spark apache-spark-sql


【解决方案1】:

这在 Scala 中的工作方式相同:

scala> spark.version
res1: String = 2.3.0

scala> spark.sql("select date_format(to_date('2017-01-01'),'W') as week").show
// +----+
// |week|
// +----+
// |   1|
// +----+

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

scala> val df = Seq("2017-01-01").toDF("date")
df: org.apache.spark.sql.DataFrame = [date: string]

scala> df.select(date_format(to_date(col("date")), "W")).show
+-------------------------------+
|date_format(to_date(`date`), W)|
+-------------------------------+
|                              1|
+-------------------------------+

【讨论】:

    猜你喜欢
    • 2020-03-29
    • 2019-12-24
    • 2018-05-04
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2017-05-04
    相关资源
    最近更新 更多