scala - java.lang.ClassCastException: org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema 不能被强制转换
问题描述
我正在尝试将数据框中的行转换为案例类并出现以下错误
2019-08-19 20:13:08 任务 1 的执行程序任务启动工作程序错误执行程序:91 - 阶段 1.0(TID 1)中任务 0.0 中的异常 java.lang.ClassCastException:org.apache.spark.sql.catalyst.expressions .GenericRowWithSchema 不能转换为 Models.City
Sample Log = {"Id": "1","City": {"name": "A","state": "B"}}
下面是读取包含json格式数据的文本文件的代码,该文件抛出错误
case class City(name: String, state: String)
val file = new File("src/test/resources/log.txt")
val logs = spark.
read.
text(file.getAbsolutePath).
select(col("value").
as("body"))
import spark.implicits._
var logDF: DataFrame = spark.read.json(logs.as[String])
logDF.map(row => row.getAs[City]("City").state).show()
由于某些限制,基本上我无法对数据框本身执行任何操作。所以给定一行我们如何将它转换为案例类(我不能在这里使用匹配模式,因为案例类可以有很多字段和嵌套案例类)
提前致谢。任何帮助是极大的赞赏!!
解决方案
推荐阅读
- r - Highcharter X 轴无法正确显示 SQL Database for Shiny App 的月份范围
- django - Django 3.2 - 我如何使用上下文进行重定向?
- google-classroom - 如何在谷歌课堂上发布公告
- javascript - UnhandledPromiseRejectionWarning: TypeError: channel.createWebhook is not a function
- bash - 在 bash/awk/c 中粘贴数百个具有特定模式名称的文件
- python - 如何在字典中找到Y等于Z的X
- c - 如果我们只对它的低 4 字节使用 mov 操作,那么 64 位寄存器的高 4 字节是否设置为零
- javascript - jQuery - 如何从已删除的行中获取输入量
- html - 如何使用 Git 组织 Web 开发
- javascript - 在单击其他组件中的按钮之前,React 组件中的逻辑不起作用