首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建[(Row,Row)]的数据集

如何创建[(Row,Row)]的数据集
EN

Stack Overflow用户
提问于 2020-03-12 09:28:00
回答 1查看 222关注 0票数 0

我有一个接受Dataset[(Row, Row)]的函数,我正在尝试测试这个函数,但是我不确定如何创建一个属于Dataset[(Row, Row)]的数据集。

我尝试了下面的方法,但它显示这是tuple2[DataFrame, DataFrame]类型

代码语言:javascript
复制
      val df: Dataset[(Row,Row)] = (
        Seq(
          ("NOW", "active", 1, 11),
          ("BEFORE", "active", 2, 11),
          ("AFTER", "active", 3, 33)
        ).toDF(),
        Seq(
          ("NOW", "sub_uuid1", 1, "com_uuid1"),
          ("BEFORE", "sub_uuid2", 2, "com_uuid2"),
          (null, null, 3, null)
        ).toDF()
      )

我如何编写上面的代码,使其成为Dataset[(Row,Row)]类型

EN

回答 1

Stack Overflow用户

发布于 2020-03-12 15:12:15

因为您创建了Dataset[Row]的元组

代码语言:javascript
复制
val ds1: Dataset[Row] = Seq(
          ("NOW", "active", 1, 11),
          ("BEFORE", "active", 2, 11),
          ("AFTER", "active", 3, 33)
        ).toDF()
val ds2: Dataset[Row] = Seq(
          ("NOW", "sub_uuid1", 1, "com_uuid1"),
          ("BEFORE", "sub_uuid2", 2, "com_uuid2"),
          (null, null, 3, null)
        ).toDF()

然后你就把它们组合成了元组:

代码语言:javascript
复制
val df: (Dataset[Row], Dataset[Row]) = (ds1, ds2)

您可以执行所需的操作:

代码语言:javascript
复制
val df: Dataset[(Row, Row)] =
  Seq(
    (Row("NOW", "active", 1, 11), Row("NOW", "sub_uuid1", 1, "com_uuid1")),
    (Row("BEFORE", "active", 2, 11), Row("BEFORE", "sub_uuid2", 2, "com_uuid2")),
    (Row("AFTER", "active", 3, 33), Row(null, null, 3, null))
  ).toDS()

实际上,创建包含元组行的Dataset是一种糟糕的做法。如果你可以重写你的函数来接受两个数据帧(DataFrame: a, DataFrame: b),而不是ab: Dataset[(Row, Row)],那会更好。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60646466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档