2015-04-24 2 views
0

scalaresult.txtscala read file, и каждая строка сохраняется в переменной?

0~250::250~500::500~750::750~1000::1000~1250 
481::827::750::256::1000 

код Scala

val filename = "/home/user/scalaresult.txt" 
for ((line,index) <- Source.fromFile(filename).getLines().zipWithIndex){ 
    println(line) 
    println(index) 
} 

//val step_x = "0~250::250~500::500~750::750~1000::1000~1250" 
//val step_y = "481::827::750::256::1000" 
Seq("java", "-jar", "/home/user/birt2.jar" , step_x , step_y , "BarChart").lines 

У меня есть файл: scalaresult.txt

мне нужно сохранить первую строку (index(0)) в step_x и вторую линию (index(1)) в step_y

Как это сделать? Пожалуйста, помогите мне. Спасибо.

+0

Какое это имеет отношение к апаче-искрам? – eliasah

+0

Извините, я его отредактировал. Я просто подумал, может быть, он может использовать искру rdd.все не знакомы с этими навыками. – user2492364

+0

А что, если у вас 1 миллион строк? Вы создадите Val для каждой строки? – eliasah

ответ

2

Это не является оптимальным решением, но вы можете попробовать следующее: (я не эксперт еще Scala: P)

scala> val it = Source.fromFile(filename).getLines().toList 
it: List[String] = List(0~250::250~500::500~750::750~1000::1000~1250, "481::827::750::256::1000 ") 

scala> it(1) 
res7: String = "481::827::750::256::1000 " 

scala> it(0) 
res8: String = 0~250::250~500::500~750::750~1000::1000~1250 
0

Если все, что вы пытаетесь сделать, это взять две строки из файла и вставки их в последовательность, индексщик в списке сделает трюк. Имейте в виду, что это O (n) операция в списке, поэтому, если было много строк, это был бы не лучший подход.

val filename = "/home/user/scalaresult.txt" 
val lines = Source.fromFile(filename).getLines() 
val seq = Seq("java", "-jar", "/home/user/birt2.jar" , lines(0) , lines(1), "BarChart")