Basit bir web hizmetini, Spray
ve Slick
kullanarak, Spark ML Tahmin Boru Hattı aracılığıyla gelen bir isteği ileten başarılı bir şekilde uyguladım. Veri katmanı eklemeye kadar her şey iyi çalışıyordu. Slick'i seçtim, popüler gibi görünüyor. Bununla birlikte, doğru şekilde çalışamıyorum. Kodumun çoğunu Hello-Slick Activator Template'a dayandırıyorum. Ben şöyle bir DAO nesne kullanın:Sprey, Kaygan, Spark - OutOfMemoryError: PermGen alanı
object dataDAO {
val datum = TableQuery[Datum]
def dbInit = {
val db = Database.forConfig("h2mem1")
try {
Await.result(db.run(DBIO.seq(
datum.schema.create
)), Duration.Inf)
} finally db.close
}
def insertData(data: Data) = {
val db = Database.forConfig("h2mem1")
try {
Await.result(db.run(DBIO.seq(
datum += data,
datum.result.map(println)
)), Duration.Inf)
} finally db.close
}
}
case class Data(data1: String, data2: String)
class Datum(tag: Tag) extends Table[Data](tag, "DATUM") {
def data1 = column[String]("DATA_ONE", O.PrimaryKey)
def data2 = column[String]("DATA_TWO")
def * = (data1, data2) <> (Data.tupled, Data.unapply)
}
benim Boot
nesnesinde benim veritabanını başlatmak
object Boot extends App {
implicit val system = ActorSystem("raatl-demo")
Classifier.initializeData
PredictionDAO.dbInit
// More service initialization code ...
}
benim veritabanına bir kayıt eklemeyi deneyin hizmet isteği
val predictionRoute = {
path("data") {
get {
parameter('q) { query =>
// do Spark stuff to get prediction
DataDAO.insertData(data)
respondWithMediaType(`application/json`) {
complete {
DataJson(data1, data2)
}
}
}
}
}
tamamlamadan önce
Hizmetime bir istek gönderdiğimde benim uygulama çöküyor
java.lang.OutOfMemoryError: PermGen space
Slick API'sini hatalı uyguladığımdan şüpheliyim. Belgeleri anlatmak zor, çünkü tüm işlemleri ana yönteme dahil ediyor.
Son olarak, benim conf Herkes önce bu karşılaştı
h2mem1 = {
url = "jdbc:h2:mem:raatl"
driver = org.h2.Driver
connectionPool = disabled
keepAliveConnection = true
}
aktivatör ui aynıdır? Slick 3.1
kullanıyorum
en kolay yolu için . – maasg