在spark scala中强制转换结构数组时的奇怪行为
我在使用spark 2.1.1和scala 2.11.8时遇到了一个奇怪的行为:在spark scala中强制转换结构数组时的奇怪行为,scala,apache-spark,casting,Scala,Apache Spark,Casting,我在使用spark 2.1.1和scala 2.11.8时遇到了一个奇怪的行为: import spark.implicits._ val df = Seq( (1,Seq(("a","b"))), (2,Seq(("c","d"))) ).toDF("id","data") df.show(false) df.printSchema() +---+-------+ |id |data | +---+-------+ |1 |[[a,b]]| |2 |[[c,d]]| +-
import spark.implicits._
val df = Seq(
(1,Seq(("a","b"))),
(2,Seq(("c","d")))
).toDF("id","data")
df.show(false)
df.printSchema()
+---+-------+
|id |data |
+---+-------+
|1 |[[a,b]]|
|2 |[[c,d]]|
+---+-------+
root
|-- id: integer (nullable = false)
|-- data: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- _1: string (nullable = true)
| | |-- _2: string (nullable = true)
现在,我想按照中的建议重命名我的结构字段
现在两行显示相同的数组。我做错了什么
编辑:在spark 2.1.2(以及spark 2.3.0)中,我得到了预期的输出。如果缓存数据帧,也会得到预期的输出:
val df = Seq(
(1,Seq(("a","b"))),
(2,Seq(("c","d")))
).toDF("id","data")
.cache
当我在spark 2.1.1和scala 2.11.8中尝试时没有问题。@RameshMaharjan奇怪的是,我可以在3台不同的计算机(windows和linux,以及intellij和spark笔记本)上复制该错误。我只是在windows上尝试intellij,似乎根本没有问题。@RaphaelRoth我在Ubuntu上遇到了与您相同的问题。现在感觉像是行动。在做了一些调试过程之后,我有了一些线索,但仍然不知道根本原因。
+---+-------+
| id| data|
+---+-------+
| 1|[[c,d]]|
| 2|[[c,d]]|
+---+-------+
val df = Seq(
(1,Seq(("a","b"))),
(2,Seq(("c","d")))
).toDF("id","data")
.cache