произошла ошибка компиляции scala spark, ожидаемый класс или определение объекта - PullRequest
0 голосов
/ 28 апреля 2018

Я хочу запустить эту программу. Я новичок в Scala Spark. У меня «ошибка компиляции» кто-нибудь может мне помочь с этим?

введите код здесь

package main.scala.com.matthewrathbone.spark
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import scala.collection.Map

class ExampleJob(sc: SparkContext) {
  // reads data from text files and computes the results. This is what you test
  def run(t: String, u: String) : RDD[(String, String)] = {
    val transactions = sc.textFile(t)
    val newTransactionsPair = transactions.map{t =>                
        val p = t.split(" ")
        (p(2).toInt, p(1).toInt)
    }

val users = sc.textFile(u)
val newUsersPair = users.map{t =>                
    val p = t.split(" ")
    (p(0).toInt, p(3))
}

val result = processData(newTransactionsPair, newUsersPair)
return sc.parallelize(result.toSeq).map(t => (t._1.toString, t._2.toString))


 } 

  def processData (t: RDD[(Int, Int)], u: RDD[(Int, String)]) : Map[Int,Long] = {
    var jn = t.leftOuterJoin(u).values.distinct
    return jn.countByKey
  }
}

object ExampleJob {
  def main(args: Array[String]) {
   val transactionsIn = Resource.fromFile("/home/ali/Desktop/main/scala/com/matthewrathbone/spark/transactions.txt")
    val usersIn = Resource.fromFile("/home/ali/Desktop/main/scala/com/matthewrathbone/spark/users.txt") 

//val transactionsIn = args(1)
  //  val usersIn = args(0)
    val conf = new SparkConf().setAppName("SparkJoins").setMaster("local")
    val context = new SparkContext(conf)
    val job = new ExampleJob(context)
    val results = job.run(transactionsIn, usersIn)
    //val output = args(2)
val output = Resource.fromFile("/home/ali/Desktop/main/scala/com/matthewrathbone/spark/out.txt")
    results.saveAsTextFile(output)
    context.stop()
  }
}

Я пытался это сделать с помощью аргументов, но ошибка была точно такой же. этот код выполняет некоторые операции с текстовым файлом буксировки в оболочке Я также иногда получаю сообщение об ошибке первой строки определения пакета.

спасибо заранее

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Я нашел свою проблему, было несоответствие параметров конечно, но я изменил его на строку и проблема не решилась, после этого я использовал sbt для упаковки и компиляции, sbt автоматически добавил библиотеки и программа работает правильно, спасибо за ответы

0 голосов
/ 28 апреля 2018

Ваш метод run принимает 2 параметра, которые имеют значение 2 String (t: String, u: String), но в вашем методе main вы вызываете его с помощью 2 Resource. Вы хотите изменить transactionsIn и usersIn как String, например:

val transactionsIn = "/home/ali/Desktop/main/scala/com/matthewrathbone/spark/transactions.txt"
val usersIn = "/home/ali/Desktop/main/scala/com/matthewrathbone/spark/users.txt" 
...//context initialization
val results = job.run(transactionsIn, usersIn)

Я также новичок в Scala, но я не думаю, что вы должны использовать return в коде, см. это SO .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...