Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 用ZipWithIndex/ZipWithiUniqueId替换字符串_Scala_Apache Spark - Fatal编程技术网

Scala 用ZipWithIndex/ZipWithiUniqueId替换字符串

Scala 用ZipWithIndex/ZipWithiUniqueId替换字符串,scala,apache-spark,Scala,Apache Spark,我试图使用ZipWithIndex或ZipWithiUniqueId将某个字符串替换为数字 假设我有这个格式 ("u1",("name", "John Sam")) ("u2",("age", "twinty Four")) ("u3",("name", "sam Blake")) 我想要这个结果 (0,(3,4)) (1,(5,6)) (2,(3,8)) 我所做的是提取键、值对中的第一个元素 所以我做了 我得到了这样的结果 ("u1",0) ("u2",1) ("u3",2) 现在我需要

我试图使用ZipWithIndex或ZipWithiUniqueId将某个字符串替换为数字

假设我有这个格式

("u1",("name", "John Sam"))
("u2",("age", "twinty Four"))
("u3",("name", "sam Blake"))
我想要这个结果

(0,(3,4))
(1,(5,6))
(2,(3,8))
我所做的是提取键、值对中的第一个元素 所以我做了

我得到了这样的结果

("u1",0)
("u2",1)
("u3",2)
现在我需要获取ID/编号并在原始文件中进行更改。我需要在哈希表中保留所有不同的ID/数字,以便以后能够查找它们。 有办法吗?有什么建议吗

我希望你能理解我的问题

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))) }
最后一步是:

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))) }

展平数据:

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))) }
最后一步是:

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))) }

哪部分不起作用?此代码可以按原样执行。看起来您需要的不是问题中描述的内容……哪部分不起作用?此代码可以按原样执行。看起来您需要的不是问题中描述的内容。。。