代码之家  ›  专栏  ›  技术社区  ›  Henrique Goulart

Spark数据集附加唯一ID

  •  3
  • Henrique Goulart  · 技术社区  · 7 年前

    我在看是否有“已经实施的替代方案” append spark数据集上的唯一ID。

    我的方案: 我有一个每天处理一批信息的增量作业。在此作业中,我创建了一个维度表 something 并使用为每行分配唯一ID monotonically_increasing_id() . 第二天,我想在上面附加一些行 某物 表,并希望为这些行生成唯一ID。

    例子:

    第1天:

    something_table    
    uniqueID   name
    100001     A
    100002     B
    

    第2天:

    something_table
    uniqueId   name
    100001     A
    100002     B
    100003     C -- new data that must be created on day 2
    

    第1天的Sniped代码:

    case class BasicSomething(name: String)
    case class SomethingTable(id: Long, name: String)
    
    val ds: Dataset[BasicSomething] = spark.createDataset(Seq(BasicSomething("A"), BasicSomething("B")))
    
    ds.withColumn("uniqueId", monotonically_increasing_id())
    .as[SomethingTable]
    .write.csv("something")
    

    我不知道如何保持状态 单调\u递增\u id() 在某种程度上,第二天它将从 something_table 唯一id。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Ramesh Maharjan    7 年前

    你总是可以得到 最后唯一ID 数据集 您已创建的。因此,您可以 将该唯一id与monoticy\u increasing\u id()一起使用,并创建新的唯一id .

    ds.withColumn("uniqueId", monotonically_increasing_id()+last uniqueId of previous dataframe)