scala读取文件并拆分然后保存到val中

时间:2015-04-22 06:49:55

标签: scala

我有一个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)什么都不做,请告诉我如何显示我想要的格式 谢谢

2 个答案:

答案 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)