首页 > 解决方案 > 带有空格 DataFrame -> Dataset 的 Spark 列

问题描述

在我开始之前 - 我知道带有空格的列名本质上是不好的。就我而言,它是由第 3 方商业产品强加给我们的。

我也知道我可以使用反引号来转义列名。这是我的用例:

    // 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 来捕获空格,然后无法进行映射。

这种事情有解决方案/解决方法吗?

标签: apache-sparkapache-spark-sqlapache-spark-dataset

解决方案


推荐阅读