我有一个hello.txt
hello.txt的
[,1]
1 2
2 2
5 12
6 4
这是scala代码:
val textFile = sc.textFile("/home/winsome/share/hello.txt")
val ratings = textFile.map { line =>
val fields = line.split(" ")
val (id, linksStr) = (fields(0).toInt, fields(1).toInt)
println(id) //1 2 5 6
printlin(linkStr) //2 2 12 4
}
println(id)
和printlin(linkStr)
什么都不做,请告诉我如何显示我想要的格式
谢谢
答案 0 :(得分:1)
假设每一行都是以制表符分隔的,请考虑像这样分割,
line.split("\t")
更简单,没有分隔符假设,拆分字母数字字,
line.split("\\W+")
另外,要提取每个单词,请考虑
val Array(a,b,_*) = line.split("\\W+")
答案 1 :(得分:0)
我在您的代码中看到了3个可能的问题。首先,你确定你只有空格作为分隔符吗?我们确保使用任意数量的非数字:line.split("[^\\d]+")
。第二,第一行[, 1]
怎么样 - 它有不同的结构,所以你应该删除这一行。第三个问题是您使用map
进行副作用。 map
必须是纯函数式的,仅用于数据转换。要打印到控制台,请使用foreach
。让我们结束:
val textFile = sc.textFile("/home/winsome/share/hello.txt")
val ratings = textFile
.map ( line => {
val fields = line.split("[^\\d]+")
(fields(0).toInt, fields(1).toInt)
})
.foreach(println)