Scala 映射函数

Scala Map Function

我需要一些帮助来解决我在使用 Scala 映射函数时遇到的这个问题。 我加载了一个由制表符分隔的文本文件。

值如下: RDD:org.apache.spark.rdd.RDD[字符串]

数组[String]=数组(200110 1220 盗窃,200112 2020 电池,200101 1010 损坏,....)

我想做的是得到一个像这样的 RDD(1220 THEFT,2020 BATTERY,1010 DAMAGE,....)

我试过以下方法,但它只是抛出错误。

val crimeData = sc.textFile("/user/user_dir/crime_data")
val crimeTest = crimeData.map(crime => { 
val b = crime.split(",")
val c = b(0).split(" ")
((c(1),c(2)))
})

当我 运行 这段代码时,我得到的只是一个 ArrayOutOfBoundsExeception: 1

我知道它会抛出这个错误,因为它无法访问位置 1,但我不知道如何以我想要的方式获得结果。

请帮忙!

我认为不需要下面的代码。val b = Crime.split(",")在crimeData中,处理的每条数据都是"200110 1220 THEFT",所以我们不需要用逗号来分割。

val crimeTest = crimeData.filter(_.split(" ").length == 3)
      .map(crime => {
      val c = crime.split(" ")
      (c(1), c(2))
    })

希望对你有帮助。

我可以让代码像这样工作

val crimeTest = crimeData.map(rec => {
val b = rec.split(" ")
val c = b(0).split("\t")
((c(1), c(2)))

})

所以我的最终结果是这样的:

(7866, 盗窃)

(6525,电池)

(4714,麻醉品)

.....