如何在 scala 案例类中转义减号



我有一个镶木地板文件,它的列名中有-减号(即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]
}

但问题是减号-在案例类抛出错误。我试过用反引号 ('( 括起来,它没有帮助。请在下面找到错误列表。

不带反引号的错误

case class Student (student-name : String, student_age : String)
:expected
Wrong top statement declaration

反引号错误

case class Student (`student-name` : String, student_age : String)
cannot resolve '`student$minusname`' given input columns:[student-name,student_age]

任何帮助将不胜感激!

谢谢

你不能用Spark读取这些类型的字段,在Java中无效的每个名称在尝试读取Spark时都会给出错误。 这是因为Spark在Java中生成代码,并且它们在代码生成步骤中使用相同的名称。

我有一个开放的 PR,它改进了 Spark 在字段名称以数字开头的情况下给出的错误消息:https://github.com/apache/spark/pull/26319。

解决方法是按照 Ott 所说@Alex,您需要先将列重命名为有效名称,然后正常读取。

最新更新