Scala / RDD:如何将元组的值与同一元组中的值列表进行比较

时间:2018-08-16 20:26:43

标签: scala apache-spark rdd sparkcore

我有如下数据

val t=((1,List(1,2,3,4)),(2,List(1,2,3,4)),(3,List(1,2,3,4)),(4,List(1,2,3,4)))

,我想要输出类似:

1--1
2--2
3--3
4--4

可以使用斯卡拉(scala)或Spark Core(火花塞)帮助某些身体吗?

2 个答案:

答案 0 :(得分:1)

尝试一下:

  val spark = SparkSession.builder()
    .appName("app_name")
    .master("local[2]")
    .getOrCreate()

  import spark.implicits._

  val df = spark.sparkContext.parallelize(Seq((1,List(1,2,3,4)),(2,List(1,2,3,4)),(3,List(1,2,3,4)),(4,List(1,2,3,4))))
  df.map{
    case (id, list) => s"${id}--${list(id - 1)}"
  }.toDF().show()

答案 1 :(得分:1)

使用RDD的另一种方法:

输入:

(1,List(1, 2, 3, 4))
(2,List(1, 2, 3, 4))
(3,List(1, 2, 3, 4))
(4,List(1, 2, 3, 4))

t.map(x => s"""${x._1} -- ${if(x._2.contains(x._1)) x._1}""").collect.foreach(println)  

输出:

1 -- 1
2 -- 2
3 -- 3
4 -- 4