开始之前-我知道带有空格的列名本质上是不好的。就我而言,它是由第三方商业产品强加给我们的。
我也了解我可以使用反斜线转义列名称。这是我的用例:
// Define a class
case class MyClass (
field1: String,
`my field 2`: String
)
// Create a DataFrame
val myDf = Seq(
("value1", "value2"),
("value3", "value4")
).toDF("field1", "my field 2")
// Inspect the schema, note the column name /w space
myDf.printSchema
root
|-- field1: string (nullable = true)
|-- my field 2: string (nullable = true)
// Convert into a Dataset
val myDs = myDf.as[MyClass]
Name: org.apache.spark.sql.AnalysisException
Message: cannot resolve '`my$u0020field$u00202`' given input columns: [field1, my field 2];
StackTrace: at org.apache.spark.sql.catalyst.analysis.package$AnalysisErrorAt.failAnalysis(package.scala:42)
使用隐式转换,似乎使用unicode来捕获空格,然后无法进行映射。
是否有解决方案/可以解决此类问题?