У меня есть столбец даты, который представляет собой строку в фрейме данных в формате временной метки 2017-01-01 12:15:43.
Теперь я хочу получить номер дня недели (от 1 до 7) из этого столбца, используя фрейм данных, а не искру sql.
Как показано ниже
df.select(weekday(col("colname")))
Я нашел один в python и sql, но не в scala. может ли кто-нибудь помочь мне в этом
в sqlcontext
sqlContext.sql("select date_format(to_date('2017-01-01'),'W') as week")
Я пытался преобразовать это, но не работал
В 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|
+-------------------------------+
Код Scala и Python будет практически идентичным. Вы могли буквально копировать и вставлять из одного в другой (за исключением назначений).