hi VO,
thats really impressive article you have written. i need to install that
DEMO-tapster. my repository is mysql, could you please help me solving it?
thanks and cheers for ur article, i suppose it must be helpful for lot of
noobies like me.
-DAN

On Wed, Jul 26, 2017 at 3:37 PM, Vaghawan Ojha <[email protected]>
wrote:

> Hi Darshan,
>
> I had written a brief article on medium to start from scratch, you could
> follow that as well. https://medium.freecodecamp.org/building-an-
> recommendation-engine-with-apache-prediction-io-ml-server-aed0319e0d8
> here's the link. I myself had faced lots of problems while installation,
> but pio and ur community is great for instant support. I've included common
> errors and there troubleshooting as well.
>
> Hope this helps.
>
> Thanks
> Vaghawan
>
> On Wed, Jul 26, 2017 at 3:37 PM, Tom Chan <[email protected]> wrote:
>
>> darshan@darshu:~/PredictionIO/tapster-episode-similar/src/main/scala$
>> pio train
>>
>> Can you try the command from the tapster-episode-similar directory?
>>
>> Tom
>>
>> On Jul 26, 2017 2:45 AM, "Darshan A.N." <[email protected]> wrote:
>>
>>> hi team,
>>> i am trying to install demo tapster. i  followed
>>> http://predictionio.incubator.apache.org/demo/tapster/.     It took
>>> more than a week to install predictionio.
>>> now that i m installed the PIO, its throwing me error while running the
>>> $pio build command. the error goes like this:
>>> darshan@darshu:~/PredictionIO/tapster-episode-similar$ pio build
>>> SLF4J: Class path contains multiple SLF4J bindings.
>>> SLF4J: Found binding in [jar:file:/home/darshan/Predic
>>> tionIO/lib/spark/pio-data-hdfs-assembly-0.11.0-incubating.ja
>>> r!/org/slf4j/impl/StaticLoggerBinder.class]
>>> SLF4J: Found binding in [jar:file:/home/darshan/Predic
>>> tionIO/lib/pio-assembly-0.11.0-incubating.jar!/org/slf4j/imp
>>> l/StaticLoggerBinder.class]
>>> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
>>> explanation.
>>> SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
>>> [INFO] [Engine$] Using command '/home/darshan/PredictionIO/sbt/sbt' at
>>> /home/darshan/PredictionIO/tapster-episode-similar to build.
>>> [INFO] [Engine$] If the path above is incorrect, this process will fail.
>>> [INFO] [Engine$] Uber JAR disabled. Making sure
>>> lib/pio-assembly-0.11.0-incubating.jar is absent.
>>> [INFO] [Engine$] Going to run: /home/darshan/PredictionIO/sbt/sbt
>>> package assemblyPackageDependency in /home/darshan/PredictionIO/tap
>>> ster-episode-similar
>>> [ERROR] [Engine$] [error] /home/darshan/PredictionIO/tap
>>> ster-episode-similar/src/main/scala/DataSource.scala:63: not found:
>>> value eventsDb
>>> [ERROR] [Engine$] [error]     val viewEventsRDD: RDD[ViewEvent] =
>>> eventsDb.find(
>>> [ERROR] [Engine$] [error]                                         ^
>>> [ERROR] [Engine$] [error] one error found
>>> [ERROR] [Engine$] [error] (compile:compileIncremental) Compilation failed
>>> [ERROR] [Engine$] [error] Total time: 5 s, completed 26 Jul, 2017
>>> 1:56:50 AM
>>> [ERROR] [Engine$] Return code of build command:
>>> /home/darshan/PredictionIO/sbt/sbt  package assemblyPackageDependency
>>> is 1. Aborting.
>>> [INFO] [Engine$] Looking for an engine...
>>> [INFO] [Engine$] Found template-scala-parallel-simila
>>> rproduct_2.10-0.1-SNAPSHOT.jar
>>> [INFO] [Engine$] Found template-scala-parallel-simila
>>> rproduct-assembly-0.1-SNAPSHOT-deps.jar
>>> [INFO] [Engine$] Build finished successfully.
>>> [INFO] [Pio$] Your engine is ready for training.
>>>
>>>
>>> and the file DataSource.scala,
>>>
>>>
>>> package org.example.similarproduct
>>>
>>> import org.apache.predictionio.controller.PDataSource
>>> import org.apache.predictionio.controller.EmptyEvaluationInfo
>>> import org.apache.predictionio.controller.EmptyActualResult
>>> import org.apache.predictionio.controller.Params
>>> import org.apache.predictionio.data.storage.Event
>>> import org.apache.predictionio.data.store.PEventStore
>>>
>>> import org.apache.spark.SparkContext
>>> import org.apache.spark.SparkContext._
>>> import org.apache.spark.rdd.RDD
>>>
>>> import grizzled.slf4j.Logger
>>>
>>> case class DataSourceParams(appName: String) extends Params
>>>
>>> class DataSource(val dsp: DataSourceParams)
>>>   extends PDataSource[TrainingData,
>>>       EmptyEvaluationInfo, Query, EmptyActualResult] {
>>>
>>>   @transient lazy val logger = Logger[this.type]
>>>
>>>   override
>>>   def readTraining(sc: SparkContext): TrainingData = {
>>>
>>>     // create a RDD of (entityID, User)
>>>     val usersRDD: RDD[(String, User)] = PEventStore.aggregateProperties(
>>>       appName = dsp.appName,
>>>       entityType = "user"
>>>     )(sc).map { case (entityId, properties) =>
>>>       val user = try {
>>>         User()
>>>       } catch {
>>>         case e: Exception => {
>>>           logger.error(s"Failed to get properties ${properties} of" +
>>>             s" user ${entityId}. Exception: ${e}.")
>>>           throw e
>>>         }
>>>       }
>>>       (entityId, user)
>>>     }.cache()
>>>
>>>     // create a RDD of (entityID, Item)
>>>     val itemsRDD: RDD[(String, Item)] = PEventStore.aggregateProperties(
>>>       appName = dsp.appName,
>>>       entityType = "item"
>>>     )(sc).map { case (entityId, properties) =>
>>>       val item = try {
>>>         // Assume categories is optional property of item.
>>>         Item(categories = properties.getOpt[List[String]]("categories"))
>>>       } catch {
>>>         case e: Exception => {
>>>           logger.error(s"Failed to get properties ${properties} of" +
>>>             s" item ${entityId}. Exception: ${e}.")
>>>           throw e
>>>         }
>>>       }
>>>       (entityId, item)
>>>     }.cache()
>>>
>>>     // get all "user" "view" "item" events
>>>     val viewEventsRDD: RDD[ViewEvent] = eventsDb.find(
>>>       appId = dsp.appId,
>>>       entityType = Some("user"),
>>>       eventNames = Some(List("like")),
>>>       // targetEntityType is optional field of an event.
>>>       targetEntityType = Some(Some("item")))(sc)
>>>       // eventsDb.find() returns RDD[Event]
>>>       .map { event =>
>>>         val viewEvent = try {
>>>           event.event match {
>>>             case "like" => ViewEvent(
>>>               user = event.entityId,
>>>               item = event.targetEntityId.get,
>>>               t = event.eventTime.getMillis)
>>>             case _ => throw new Exception(s"Unexpected event ${event} is
>>> read.")
>>>           }
>>>         } catch {
>>>           case e: Exception => {
>>>             logger.error(s"Cannot convert ${event} to ViewEvent." +
>>>               s" Exception: ${e}.")
>>>             throw e
>>>           }
>>>         }
>>>         viewEvent
>>>       }.cache()
>>>
>>>     new TrainingData(
>>>       users = usersRDD,
>>>       items = itemsRDD,
>>>       viewEvents = viewEventsRDD
>>>     )
>>>   }
>>> }
>>>
>>> case class User()
>>>
>>> case class Item(categories: Option[List[String]])
>>>
>>> case class ViewEvent(user: String, item: String, t: Long)
>>>
>>> class TrainingData(
>>>   val users: RDD[(String, User)],
>>>   val items: RDD[(String, Item)],
>>>   val viewEvents: RDD[ViewEvent]
>>> ) extends Serializable {
>>>   override def toString = {
>>>     s"users: [${users.count()} (${users.take(2).toList}...)]" +
>>>     s"items: [${items.count()} (${items.take(2).toList}...)]" +
>>>     s"viewEvents: [${viewEvents.count()}] (${viewEvents.take(2).toList}.
>>> ..)"
>>>   }
>>> }
>>>
>>>
>>>
>>>
>>> while training, it gives  me following error,
>>>
>>>
>>>
>>>
>>> darshan@darshu:~/PredictionIO/tapster-episode-similar/src/main/scala$
>>> pio train
>>> SLF4J: Class path contains multiple SLF4J bindings.
>>> SLF4J: Found binding in [jar:file:/home/darshan/Predic
>>> tionIO/lib/spark/pio-data-hdfs-assembly-0.11.0-incubating.ja
>>> r!/org/slf4j/impl/StaticLoggerBinder.class]
>>> SLF4J: Found binding in [jar:file:/home/darshan/Predic
>>> tionIO/lib/pio-assembly-0.11.0-incubating.jar!/org/slf4j/imp
>>> l/StaticLoggerBinder.class]
>>> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
>>> explanation.
>>> SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
>>> [WARN] [Template$] /home/darshan/PredictionIO/tap
>>> ster-episode-similar/src/main/scala/template.json does not exist.
>>> Template metadata will not be available. (This is safe to ignore if you are
>>> not working on a template.)
>>> Exception in thread "main" java.io.FileNotFoundException:
>>> /home/darshan/PredictionIO/tapster-episode-similar/src/main/scala/engine.json
>>> (No such file or directory)
>>>     at java.io.FileInputStream.open0(Native Method)
>>>     at java.io.FileInputStream.open(FileInputStream.java:195)
>>>     at java.io.FileInputStream.<init>(FileInputStream.java:138)
>>>     at scala.io.Source$.fromFile(Source.scala:90)
>>>     at scala.io.Source$.fromFile(Source.scala:75)
>>>     at org.apache.predictionio.tools.console.Console$.getEngineInfo
>>> (Console.scala:724)
>>>     at org.apache.predictionio.tools.RunWorkflow$.runWorkflow(RunWo
>>> rkflow.scala:54)
>>>     at org.apache.predictionio.tools.commands.Engine$.train(Engine.
>>> scala:186)
>>>     at org.apache.predictionio.tools.console.Pio$.train(Pio.scala:85)
>>>     at org.apache.predictionio.tools.console.Console$$anonfun$main$
>>> 1.apply(Console.scala:626)
>>>     at org.apache.predictionio.tools.console.Console$$anonfun$main$
>>> 1.apply(Console.scala:611)
>>>     at scala.Option.map(Option.scala:145)
>>>     at org.apache.predictionio.tools.console.Console$.main(Console.
>>> scala:611)
>>>     at org.apache.predictionio.tools.console.Console.main(Console.scala)
>>>
>>>
>>>
>>> i tried almost all the things, but could not find the proper solution.
>>> please help me...
>>> i know you may feel bit odd about this mail, but in need of your help.
>>>
>>> thanks,
>>>
>>>
>>> -DAN
>>>
>>
>

Reply via email to