abc 1001 3452 2463 2343 2176 7654 3452 8765 5643 3452
abc 1000 3452 2463 2343 2176 7654 3452 8765 5643 3452
tas 3420 3562 2123 1343 2176 7654 3252 8765 5643 3452
aer 1000 3452 2463 2343 2176 7654 3452 8765 5643 3452
tas 3420 3562 2123 1343 2176 7654 3252 8765 5643 3452
abc 1002 3452 2463 2343 2176 7654 3452 8765 5643 3452
tas 3420 3562 2123 1343 2176 7654 3252 8765 5643 3452
aer 1000 3452 2463 2343 2176 7654 3452 8765 5643 3452
tas 3420 3562 2123 1343 2176 7654 3252 8765 5643 3452
Выход (любое одно значение с ABC, TAS, AER):
Я получил эту работу с Скале. Есть ли какой-либо искровой эквивалент для выполнения этой операции.
Scala код:
import scala.io.Source
import java.io._
import scala.util.control._
val filename = sc.textFile("filenamelocation")
val new_file = new PrintWriter(new File("filenamelocation"))
val new_file1 = new PrintWriter(new File("filenamelocation"))
// for (line <- Source.fromFile(filename).getLines)
for (line <- filename.map(x +> x.split(" ").slice(0,3)))
{
val first_row=line
val firstWords = first_row.split(" ")(0)
// println(firstWords)
//println(line)
// val list2Add = List(4,5,6)
new_file.write(firstWords+"\n")
}
// println(list2Add)
new_file.close
val list = scala.io.Source.fromFile("filenamelocation", "utf-8").getLines.toList
val l2 = list.removeDuplicates
for (e <- l2)
{
val loop = new Breaks;
loop.breakable
{
for (line1 <- Source.fromFile(filename).getLines)
{
val first_row1=line1
val firstWords1 = first_row1.split(" ")(0)
if (e == firstWords1)
{
new_file1.write(line1+"\n")
loop.break;
}
}
}
}
new_file1.close
код Спарк трудится на:
import scala.io.Source
import java.io._
import scala.util.control._
val filename = sc.textFile("filelocation")
val test = filename.map(line => line.split(" ")(0))
val distinct = test.distinct().saveAsTextFile("/user/asugured/test1.txt")
// distinct.foreach(println)
val filename1 = sc.textFile("/user/asugured/test1.txt")
Я stucked, как итерировать оба файл в цикле, как я это сделал в Scala.
Не могли бы вы предложить, как с этим справиться.
'Seq' также имеет метод' reduce', поэтому вы можете использовать ту же идею без Spark. –
Спасибо за ответ. Даниэль Дарабос - новый для scala и искра, благодаря исправлению меня. Не могли бы вы помочь мне с кодом scala, используя этот код для создания сопоставленных файлов, но я получил оттуда попытку со вчерашнего дня. import scala.io.Source import java.io._ import scala.util.control._ val keyed = Source.fromFile ("/ home/asugured/breast/Cases.raw"). GetLines.toSeq.map (line => line.split ("") (0) -> line) val deduplicated = keyed.reduce ((x, y) => y) –
Нет проблем, надеюсь, вам понравится изучение Scala/Spark! Моя ошибка для рекомендации 'Seq.reduce', она не уменьшает ключ, поэтому в этой ситуации это не очень полезно. Сожалею. Вместо этого: 'keyed.groupBy (_._ 1) .values.map (_. Head._2)' (Попробуйте выполнить эту операцию по-разному, чтобы понять, что происходит. Или прочитайте документацию. Или спросите о переполнении стека :) .) –