当前位置: 首页 > 知识库问答 >
问题:

用ZipWithIndex/ZipWithUniqueID替换字符串

沙柏
2023-03-14
("u1",("name", "John Sam"))
("u2",("age", "twinty Four"))
("u3",("name", "sam Blake"))
(0,(3,4))
(1,(5,6))
(2,(3,8))

我所做的是提取键值对中的第一个元素

val first = file.map(line=> line._1).distinct()
then apply ZipWithIndex
val z1= first.ZipWithIndex()

我得到了这样的结果

("u1",0)
("u2",1)
("u3",2)

现在我需要采取的ID/号码,并更改它在我的原始文件。我需要在哈希表中保留所有不同的ID/Number,以便以后查找它们。那有什么办法吗?有什么建议吗?

共有1个答案

程谦
2023-03-14

val rdd = spark.sparkContext.parallelize(Seq(
  ("name", "John"), ("age", "twinty"), ("name", "sam")
))

平整数据

val flat = rdd.flatMap { case (x, y) => Seq(x, y) }

获取唯一值:

val unique = flat.distinct
val map = unique.zipWithIndex.collectAsMap
val indexed = rdd.map { case (x, y) => (map(x), map(y)) }
indexed.toLocalIterator.foreach(println)
(2,4)
(3,0)
(2,1)

编辑:

用重写的问题,将第一步替换为:

val flat = rdd.flatMap { case (x, (y, z)) => Seq(x, y, z) }

最后一步是:

val indexed = rdd.map { case (x, (y, z)) => (map(x), (map(y), map(z))) }
 类似资料:
  • 问题内容: 我有一个以字符串形式传递的句子,我正在对单词“ and”进行替换,我想用“”替换它。而且它不是用空格替换“和”一词。以下是我的逻辑示例。而当我调试此逻辑时,逻辑确实落入了句子。 这里有我想念的东西吗? 问题答案: 而当我调试此逻辑时,逻辑确实落入了句子。 是的,然后你放弃返回值。 Java中的字符串是不可变的-当你调用时,它不会更改现有字符串的内容-它会返回经过修改的新字符串。所以你要

  • 我有一个作为字符串传入的句子,我正在对单词“and”进行替换,我想用“”替换它。它并没有用空白代替“和”。下面是我的逻辑示例。当我调试这个的时候,逻辑就落在句子里了。代替 这里有我遗漏的东西吗。

  • 问题内容: 假设我的格式如下: 我想将小数点替换为空白,使其看起来像这样: 我该怎么做呢?我以为可以解决问题,但是当我尝试这样时: 我收到了一个错误消息,因为它可能不是字符。那是有道理的,那么我还能怎么完成我想要的? 问题答案: 如果您只是将单引号换成双引号,那么这将起作用,因为空字符串是合法值,而不是“空字符”,并且有重载。请记住,这是的超类型。

  • 问题内容: 我有一列包含网址(ID,网址)的列: 我想将“更新”一词更改为“新闻”。是否可以使用脚本执行此操作? 问题答案: 现在的行就像 将会 http://www.electrictoolbox.com/mysql-find-replace- text/

  • 问题 你需要用另一个值替换字符串的一部分。 解决方案 使用 JavaScript 的 replace 方法。它与给定字符串匹配,并返回已编辑的字符串。 第一个版本需要 2 个参数:模式和字符串替换 "JavaScript is my favorite!".replace /Java/, "Coffee" # => 'CoffeeScript is my favorite!' "foo bar b

  • 我有一个数据框,如下所示: 我想用一个空字符串删除NaN值,这样看起来像这样: