代码之家  ›  专栏  ›  技术社区  ›  Georg Heiler

将spark中的标识符转换为假名数据集

  •  0
  • Georg Heiler  · 技术社区  · 7 年前

    我有一个数据框,比如:

    +---+-----+
    | id|value|
    +---+-----+
    |  a|    1|
    |  a|    2|
    |  b|    1|
    |  b|    3|
    +---+-----+
    val df = Seq(("a", 1), ("a", 2), ("b", 1), ("b", 3)).toDF("id", "value")
    

    如何有效地切换/旋转ID。注意,散列不是我想要的,我明确地想要旋转标识符。如果没有自连接,如何在spark中高效地实现这一点?也许是一些 RDD zipWithIndex ?

    不是:我的意图是通过旋转标识符来对数据集进行假名/匿名化。我的要求是 a 使用另一个标识符,即可能 b . 它们都需要替换为相同的值。

    编辑

    我有个第一个建议: https://spark.apache.org/docs/latest/ml-features.html#stringindexer 但这会改变数据类型,也不会轮换我想要防止的标识符。我需要一个临时的替代品。

    另外,我预计ID的不同值约为800万(常量)。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Georg Heiler    7 年前

    收集所有不同的元素,并使用zip和这些不同元素的随机排列列表构建一个地图。