【问题标题】:Spark dataset join as tuple of case classesSpark 数据集作为案例类的元组加入
【发布时间】:2022-11-01 15:30:58
【问题描述】:

我正在加入两个数据集,其中一些列共享相同的名称。我希望输出是两个案例类的元组,每个类代表各自的数据集。

joined = dataset1.as("ds1")
.join(dataset2.as("ds2"),dataset1("key") === dataset2("key"),"inner")
// select doesn't work because of the columns which have similar names
.select("ds1.*,ds2.*)
// skipping select and going straight here doesn't work because of the same problem
.as[Tuple2(caseclass1,caseclass2)]

需要什么代码让 spark 知道将 ds1.* 映射到 caseclass1 和 ds2.* 到 caseclass2?

【问题讨论】:

    标签: dataframe scala apache-spark


    【解决方案1】:

    您可以在此处利用struct 函数,如下所示:

    // create a wrapper case class
    case class Outer(caseclass1: Caseclass1, caseclass2: Caseclass2)
    
    // join and select the columns as struct
    val joined = dataset1.as("ds1")
    .join(dataset2.as("ds2"), dataset1("key") === dataset2("key"), "inner")
    .select("struct(ds1.*) as caseclass1", "struct(ds2.*) as caseclass2")
    .as[Outer]
    
    

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      相关资源
      最近更新 更多