曜日の文字列名(例:TUESDAY)を整数(たとえば3)に変換しようとしています。私は以下のマップを書いたが、それをどのように適用するかはわからない。それはすべての行のカラム上で動作することができるようにSpark SQL:曜日の名前を整数に変換する
import org.apache.spark.sql.functions.lower
val dayNameToInteger = Map(
"sunday" -> 1,
"monday" -> 2,
"tuesday" -> 3,
"wednesday" -> 4,
"thursday" -> 5,
"friday" -> 6,
"saturday" -> 7)
var input = sqlContext.createDataFrame(Seq(
(0L, "SUNDAY", 34),
(1L, "Monday", 31),
(2L, "tuesday", 25)
)).toDF("id", "day_of_week", "value")
scala> input.show
+---+-----------+-----+
| id|day_of_week|value|
+---+-----------+-----+
| 0| SUNDAY| 34|
| 1| Monday| 31|
| 2| tuesday| 25|
+---+-----------+-----+
var output = input.select($"id", dayNameToInteger(lower(input("day_of_week"))))
<console>:27: error: type mismatch;
found : org.apache.spark.sql.Column
required: String
var output = input.select($"id", dayNameToInteger(lower(input("day_of_week"))))