Я новичок в scala и хочу отладить этот фрагмент кода, чтобы понять, почему я не получаю никаких результатов.
> def main(args:Array[String]){
> Logger.getLogger("org").setLevel(Level.ERROR)
> val sc = new SparkContext("local[*]","WordCountRe")
> val input = sc.textFile("data/book.txt")
> //With regexp
> val words = input.flatMap(x=>x.split("\\W+"))
> //Lower case
> val lowerCaseWords = words.map(x => x.toLowerCase())
> val wordCounts = lowerCaseWords.map(x => (x,1)).reduceByKey((x,y)=>x+y)
> val sortedWordCounts = wordCounts.sortBy(-_._2)
> val commonEnglishStopWords = List("you","to","your","the","a","of","and","that","it","in","is","for","on","are","if","s","i","with","t","this","or","but","they","will","what","at","my","re","do","not","about","more","an","up","need","them","from","how","there","out","new","work","so","just","don","","get","their","by","some","ll","self","make","may","even","when","one","than","also","much","job","who","was","these","find","into","only")
> val filteredWordCounts = sortedWordCounts.filter{
> x =>
> val inspectVariable = commonEnglishStopWords.contains(x._1)} //Error here
> filteredWordCounts.collect().foreach(println) } }
Когда я пытаюсь использовать этот код, я получаю ошибку компиляции:
type mismatch; found : Unit required: Boolean WordCountRe.scala /SparkScalaCourse/src/com/sundogsoftware/spark line 29 Scala Problem
Этот поток Как найти данные внутри rdd, похоже, имеет решение, которое я пытался применить, за исключением того, что я, должно быть, использовал его неправильно.
Спасибо за помощь
Обновлено: обнаружил, что не так с моим кодом (необходимо поместить ._1 в контейнер, чтобы проанализировать слово в кортеже (слово, счет)), но я до сих пор не знаю, как отлаживать / проверять значения в таком ситуация.





Проблема в том, что вы присвоили логический результат метода contains значению inspectVariable. Эта операция имеет тип возврата Unit. Но метод filter требует логического значения.
Просто удалите val inspectVariable =, и это должно исправить.
Или верните значение, добавив новую строку с содержимым inspectVariable после присвоения значения.
Как показано здесь
val filteredWordCounts = sortedWordCounts.filter { x =>
val inspectVariable = commonEnglishStopWords.contains(x._1)//put your breakpoint here
inspectVariable
}