Vic*_*cky 2 scala apache-spark
我有一个镶木地板文件,-它的列名中有减号(即student-name)。我正在尝试将案例类用作编码器,同时读取如下所示的镶木地板文件:
case class Student (student-name : String, student_age : String)
object abcd {
val student_details = spark.read.parquet('/path/to/parquet-file').as[Student]
}
Run Code Online (Sandbox Code Playgroud)
但问题是-case 类中的减号抛出错误。我试过用反引号 (`) 封闭它没有帮助。请在下面找到错误列表。
没有反引号的错误
case class Student (student-name : String, student_age : String)
:expected
Wrong top statement declaration
Run Code Online (Sandbox Code Playgroud)
反引号错误
case class Student (`student-name` : String, student_age : String)
cannot resolve '`student$minusname`' given input columns:[student-name,student_age]
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
谢谢
你不能用 Spark 读取这些类型的字段,当试图通过 Spark 读取时,每个在 Java 中无效的名称都会出错。这是因为 Spark 用 Java 生成代码,并且它们在代码生成步骤中使用相同的名称。
我有一个开放的 PR,它改进了 Spark 在字段名称以数字开头的情况下给出的错误消息:https : //github.com/apache/spark/pull/26319。
解决方法是按照@Alex Ott 所说的那样做,您需要先将列重命名为有效名称,然后正常读取。
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |