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,麻醉品)
.....
我需要一些帮助来解决我在使用 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,麻醉品)
.....