我有一个接受Dataset[(Row, Row)]的函数,我正在尝试测试这个函数,但是我不确定如何创建一个属于Dataset[(Row, Row)]的数据集。
我尝试了下面的方法,但它显示这是tuple2[DataFrame, DataFrame]类型
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)]类型
发布于 2020-03-12 15:12:15
因为您创建了Dataset[Row]的元组
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()然后你就把它们组合成了元组:
val df: (Dataset[Row], Dataset[Row]) = (ds1, ds2)您可以执行所需的操作:
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)],那会更好。
https://stackoverflow.com/questions/60646466
复制相似问题