Tôi mới dùng Scala/Spark stack và tôi đang cố gắng tìm ra cách kiểm tra các kỹ năng cơ bản của mình bằng cách sử dụng SparkSql để "ánh xạ" RDD trong TempTables và viceversa.Scala/Spark App với lỗi "No TypeTag available" trong kiểu "def chính" App
Tôi có 2 tệp .scala riêng biệt có cùng mã: một đối tượng đơn giản (có def chính ...) và đối tượng mở rộng ứng dụng.
Trong các đối tượng đơn giản mà tôi nhận được một lỗi do "Không TypeTag sẵn" kết nối với trường hợp lớp Log của tôi:
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)
}
Lỗi tại dòng: log.registerTempTable("logs")
nói "Không TypeTag sẵn cho Log".
Trong tập tin khác (đối tượng mở rộng App) tất cả hoạt động tốt:
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)
}
Kể từ khi tôi chỉ mới bắt đầu, tôi không nhận được hai điểm chính: 1) Tại sao cùng tốt công việc mã trong tập tin thứ hai (đối tượng mở rộng App) trong khi trong một đầu tiên (đối tượng đơn giản) tôi nhận được lỗi?
2) (và quan trọng nhất) Tôi nên làm gì trong mã của tôi (tệp đối tượng đơn giản) để khắc phục lỗi này để đối phó với trường hợp lớp và TypeTag (mà tôi hầu như không biết)?
Mỗi câu trả lời, các ví dụ mã sẽ được đánh giá cao!
Cảm ơn trước
FF