Jestem nowy w stosie Scala/Spark i próbuję wymyślić jak przetestować swoje podstawowe umiejętności, używając SparkSql do "mapowania" RDD w TempTables i viceversa.Scala/Spark App z "No TypeTag available" Błąd w stylu "def main" App
Mam 2 różne pliki .scala z tym samym kodem: prosty obiekt (z def main ...) i obiekt rozszerzający aplikację.
W prosty przedmiot jednej pojawia się błąd ze względu na „nie” dostępnej TypeTag podłączony do mojego przypadku klasy log:
object counter {
def main(args: Array[String]) {
.
.
.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.createSchemaRDD
case class Log(visitatore: String, data: java.util.Date, pagina: String, count: Int)
val log = triple.map(p => Log(p._1,p._2,p._3,p._4))
log.registerTempTable("logs")
val logSessioni= sqlContext.sql("SELECT visitor, data, pagina, count FROM logs")
logSessioni.foreach(println)
}
Błąd w linii: log.registerTempTable("logs")
mówi „Nie TypeTag dostępny dla Log”.
W innym pliku (obiektu rozciąga aplikacji) wszystko działa poprawnie:
object counterApp extends App {
.
.
.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.createSchemaRDD
case class Log(visitatore: String, data: java.util.Date, pagina: String, count: Int)
val log = triple.map(p => Log(p._1,p._2,p._3,p._4))
log.registerTempTable("logs")
val logSessioni= sqlContext.sql("SELECT visitor, data, pagina, count from logs")
logSessioni.foreach(println)
}
Ponieważ dopiero się rozpoczął, nie dostaję dwa główne punkty: 1) Dlaczego taką samą pracę kod grzywny w drugim pliku (aplikacja Object Extend), natomiast w pierwszym (obiekt prosty) pojawia się błąd?
2) (i najważniejsze) Co powinienem zrobić w moim kodzie (prosty plik obiektowy), aby naprawić ten błąd, aby poradzić sobie z klasą przypadków i TypeTag (który ledwo znam)?
Każda odpowiedź, przykłady kodu będą mile widziane!
góry dzięki
FF