簡體   English   中英

如何創建 [(Row, Row)] 的數據集

[英]how to create a Dataset of [(Row, Row)]

我有一個函數接收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)]

因為您創建了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()

實際上,使用元組行創建數據集是一種不好的做法。 如果您可以重寫您的函數以獲取兩個數據幀( DataFrame: a, DataFrame: b )而不是ab: Dataset[(Row, Row)] ,那就更好了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM