繁体   English   中英

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

[英]Spark 2.1.0, cannot resolve column name when doing second 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)

我已经从实木复合地板文件中读取了原始数据,然后使用案例类将行映射到类中,并具有数据集。

我希望这是由于元组的缘故,那么我该如何加入呢?

您的第一个DataFrame的结构是嵌套的 ClaimKey是另一个字段( _1 )内的一个字段; 要访问这样的字段,您可以简单地为该字段提供“路由”,并以点分隔父字段:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM