Scala 多数据帧联接

Scala 多数据帧联接,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我收到多个包含客户历史信息的csv文件: CustomerInfo.csv:ssn,名称 CustomerAddresses.csv:ssn、地址类型、街道、州、zipcode CustomerPhoneNumbers.csv:ssn,电话类型,电话号码 CustomerCreditHistory.csv:ssn,从\u日期,到\u日期,分数 我将这些文件读取为Dataframe,需要将它们连接起来以构建以下对象模型: case class Address(addressType: Stri

我收到多个包含客户历史信息的csv文件:

  • CustomerInfo.csv:ssn,名称
  • CustomerAddresses.csv:ssn、地址类型、街道、州、zipcode
  • CustomerPhoneNumbers.csv:ssn,电话类型,电话号码
  • CustomerCreditHistory.csv:ssn,从\u日期,到\u日期,分数
我将这些文件读取为Dataframe,需要将它们连接起来以构建以下对象模型:

case class Address(addressType: String, street: String, state: String, zipCode: String)
case class Phone(phoneType: String, number: String)
case class CreditHistory(fromDate: Date, toDate: Date, score: Double)
case class Customer(ssn: String, name: String, addresses: Seq[Address], phones: Seq[Phone], credits: Seq[CreditHistory])
如果你看这个,每个客户可以有超过1个地址、电话或信用记录

为了能够构造客户对象,连接这4个数据帧的最佳方式是什么


谢谢。

这个问题太笼统了,无法回答。请提供每种类型的CSV文件的标题、CSV文件的数量以及您希望在最后生成的Scala对象的类型。添加了更多详细信息您使用的Spark版本是什么?另外,当你说你正在寻找“最佳方式”时,你能分享你迄今为止所尝试的代码吗?我们正在使用的是Spark 1.6.1。实际上,我还没有为此编写多少代码。一个想法是将所有4个数据帧连接起来,最终得到一个笛卡尔积。另一种方法是,在加入客户信息之前,先按ssn分组查询地址、信用历史记录和电话,但这会导致很多阶段。这个问题太笼统,无法回答。请提供每种类型的CSV文件的标题、CSV文件的数量以及您希望在最后生成的Scala对象的类型。添加了更多详细信息您使用的Spark版本是什么?另外,当你说你正在寻找“最佳方式”时,你能分享你迄今为止所尝试的代码吗?我们正在使用的是Spark 1.6.1。实际上,我还没有为此编写多少代码。一个想法是将所有4个数据帧连接起来,最终得到一个笛卡尔积。另一种是在加入客户信息之前,先通过ssn对地址、信用历史记录和电话进行分组,但这会导致很多阶段。