带有空白DataFrame-> Dataset的Spark列

时间:2018-07-10 03:33:48

标签: apache-spark apache-spark-sql apache-spark-dataset

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

我也了解我可以使用反斜线转义列名称。这是我的用例:

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

是否有解决方案/可以解决此类问题?

0 个答案:

没有答案