Я загрузил DatingDF, который выглядит так:
+---+--------+------+---+---------+
|Uid|Zip_Code|Height|Age|Meet_Date|
+---+--------+------+---+---------+
| 1| 90117| 171| 22|881250949|
| 2| 90340| 168| 24|891717742|
| 3| 92552| 170| 38|878887116|
| 4| 90455| 175| 41|880606923|
| 5| 91045| 165| 25|886397596|
| 6| 90050| 172| 32|884182806|
| 7| 90110| 166| 27|881171488|
| 8| 90340| 169| 49|891628467|
| 9| 91040| 175| 51|886324817|
| 10| 90320| 169| 32|883603013|
+---+--------+------+---+---------+
Meet_Date представлен в Unix времени в секундах с 01.01.1970 UT C. Определена схема:
val datingSchema=StructType(Array(
StructField("Uid",IntegerType,true),
StructField("Zip_Code",IntegerType,true),
StructField("Height",IntegerType,true),
StructField("Age",IntegerType,true),
StructField("Meet_Date",IntegerType,true))
)
Я хочу перечислить DF в порядке гггг, преобразованного со времени Unix. Я выполнил запрос ниже, но получил ошибку о типе String?;
scala> val df1=datingDF.select("Uid","Zip_Code","Height","Age",from_unixtime(col("Meet_Date"), "yyyy")).orderBy("Meet_Date")
<console>:31: error: overloaded method value select with alternatives:
[U1, U2, U3, U4, U5](c1: org.apache.spark.sql.TypedColumn[org.apache.spark.sql.Row,U1], c2: org.apache.spark.sql.TypedColumn[org.apache.spark.sql.Row,U2], c3: org.apache.spark.sql.TypedColumn[org.apache.spark.sql.Row,U3], c4:
org.apache.spark.sql.TypedColumn[org.apache.spark.sql.Row,U4], c4: org.apache.spark.sql.TypedColumn[org.apache.spark.sql.Row,U5])org.apache.spark.sql.Dataset[(U1, U2, U3, U4, U5)] <and>
(col: String,cols: String*)org.apache.spark.sql.DataFrame <and>
(cols: org.apache.spark.sql.Column*)org.apache.spark.sql.DataFrame
cannot be applied to (String, String, String, String, org.apache.spark.sql.Column)
val df1=datingDF.select("Uid","Zip_Code","Height","Age",from_unixtime(col("Meet_Date"), "yyyy")).orderBy("Meet_Date")
^
Я знаю, что правильно преобразовал Unix время;
scala> val df2=datingDF.select(from_unixtime(col("Meet_Date"), "yyyy")).orderBy("Meet_Date")
df2: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [from_unixtime(Meet_Date, yyyy): string]
scala> df2.show(5)
+------------------------------+
|from_unixtime(Meet_Date, yyyy)|
+------------------------------+
| 1997|
| 1997|
| 1997|
| 1997|
| 1997|
+------------------------------+
Может кто-нибудь помочь?