Scala Spark 2.1.0,在执行第二次联接时无法解析列名

Scala Spark 2.1.0,在执行第二次联接时无法解析列名,scala,join,apache-spark,Scala,Join,Apache Spark,我有三个表,两个表在一个表中都有键,所以我在 A&B=D 现在我想用D&C的连接来完成连接 问题是我得到了这个错误: org.apache.spark.sql.AnalysisException: Cannot resolve column name "ClaimKey" among (_1, _2); at org.apache.spark.sql.Dataset$$anonfun$resolve$1.apply(Dataset.scala:219) 这是齐柏林飞艇的实际代码: join

我有三个表,两个表在一个表中都有键,所以我在 A&B=D

现在我想用D&C的连接来完成连接

问题是我得到了这个错误:

org.apache.spark.sql.AnalysisException: Cannot resolve column name "ClaimKey" among (_1, _2);
  at org.apache.spark.sql.Dataset$$anonfun$resolve$1.apply(Dataset.scala:219)
这是齐柏林飞艇的实际代码:

joinedperson.printSchema
filteredtable.printSchema
val joined = joinedperson.joinWith(filteredtable, 
    filteredtable.col("ClaimKey") === joinedperson.col("ClaimKey"))
这是我试图加入的两个表的模式,问题是第一个模式中的ClaimKey

root
 |-- _1: struct (nullable = false)
 |    |-- clientID: string (nullable = true)
 |    |-- PersonKey: string (nullable = true)
 |    |-- ClaimKey: string (nullable = true)
 |-- _2: struct (nullable = false)
 |    |-- ClientID: string (nullable = true)
 |    |-- MyPersonKey: string (nullable = true)
root
 |-- clientID: string (nullable = true)
 |-- ClaimType: string (nullable = true)
 |-- ClaimKey: string (nullable = true)
我从拼花文件中读取了原始数据,然后使用case类将行映射到类中,并创建了数据集


我想这是由于元组造成的,那么我如何进行连接呢?

第一个数据帧的结构是嵌套的-
ClaimKey
是另一个字段中的字段(
\u 1
);要访问这样一个字段,您只需给出该字段的“路径”,父字段用点分隔:

val joined = joinedperson.joinWith(filteredtable, 
  filteredtable.col("ClaimKey") === joinedperson.col("_1.ClaimKey"))

第一个数据帧的结构是嵌套的-
ClaimKey
是另一个字段中的字段(
\u 1
);要访问这样一个字段,您只需给出该字段的“路径”,父字段用点分隔:

val joined = joinedperson.joinWith(filteredtable, 
  filteredtable.col("ClaimKey") === joinedperson.col("_1.ClaimKey"))

非常感谢你。这么简单的解决方案。非常感谢。这是一个简单的解决方案。