У меня есть фрейм данных scala, который выглядит следующим образом:
+--------+--------------------+
| uid| recommendations|
+--------+--------------------+
|41344966|[[2174, 4.246965E...|
|41345063|[[2174, 0.0015455...|
|41346177|[[2996, 4.137125E...|
|41349171|[[2174, 0.0010590...|
df: org.apache.spark.sql.DataFrame = [uid: int, recommendations: array<struct<iid:int,rating:float>>]
Я хотел бы преобразовать его в набор данных scala, чтобы воспользоваться преимуществами дополнительной функциональности.Тем не менее, я новичок в scala и не знаю, как написать класс преобразования, когда столбец содержит много типов данных.Вот что у меня есть:
val query = "SELECT * FROM myTable"
val df = spark.sql(query)
case class userRecs (uid: String, recommendations: Array[Int])
val ds = df.as[userRecs]
Я получаю ошибку:
org.apache.spark.sql.AnalysisException: cannot resolve 'CAST(lambdavariable(MapObjects_loopValue47, MapObjects_loopIsNull47, StructField(iid,IntegerType,true), StructField(rating,FloatType,true), true) AS INT)' due to data type mismatch: cannot cast struct<iid:int,rating:float> to int;
Как мне переписать свой класс?