我想使用来自不同数据帧的字符串按列过滤数据帧。
val booksReadBestAuthors = userReviewsWithBooksDetails.filter(col("authors").isin(userReviewsAuthorsManyRead:_*))
val userReviewsAuthorsManyRead = userReviewsWithBooksDetails.filter($"authors".isNotNull).groupBy(col("authors"))
.agg(count("review/score").alias("count"), avg("review/score").alias("avg_score"))
.filter($"avg_score" >= 4)
.sort($"count".desc, $"avg_score".desc)
.limit(5)
.select("authors")
.collect.toList.asInstanceOf[List[String]]
我想按 userReviewsAuthorsManyRead 的值过滤作者列
作者栏看起来像这样: 点击
我收到错误: “不支持该功能:org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema 类的“[Agatha Christie]”文字。”
只需使用作者列进行内部联接,无需收集。
booksReadBestAuthors.join(userReviewsAuthorsManyRead,"Authors").show
输入:
书籍阅读最佳作者:
+-------+
|Authors|
+-------+
|Author1|
|Author2|
|Author3|
+-------+
用户评论作者很多阅读:
+-------+
|Authors|
+-------+
|Author2|
|Author3|
+-------+
输出:
+-------+
|Authors|
+-------+
|Author2|
|Author3|
+-------+