predictionio执行train、deploy、eval的命令和执行命令后的打印输出分别如下
1. train
[root@cent65m MyRecommendation]#/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/pio train
[INFO] [Console$] Using existing engine manifest JSON at /home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/MyRecommendation/manifest.json
[INFO] [Runner$] Submission command: /home/workspacepredictionio/apache-predictionio-0.10.0-incubating/vendors/spark-1.5.1-bin-hadoop2.6/bin/spark-submit --class org.apache.predictionio.workflow.CreateWorkflow --jars file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/MyRecommendation/target/scala-2.10/template-scala-parallel-recommendation-assembly-0.1-SNAPSHOT-deps.jar,file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/MyRecommendation/target/scala-2.10/template-scala-parallel-recommendation_2.10-0.1-SNAPSHOT.jar --files file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/conf/log4j.properties --driver-class-path /home/workspacepredictionio/apache-predictionio-0.10.0-incubating/conf:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/lib/postgresql-9.4-1204.jdbc41.jar:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/lib/mysql-connector-java-5.1.37.jar file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/assembly/pio-assembly-0.10.0-incubating.jar --engine-id EaX0g27pu0MJruMHAnacq7VfNDiGMx7h --engine-version b6d0beede5fb6bb095015d9d26c90768d48c5428 --engine-variant file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/MyRecommendation/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_MYSQL_PASSWORD=root,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/root/.pio_store,PIO_STORAGE_SOURCES_MYSQL_URL=jdbc:mysql://192.168.107.1:3306/pio,PIO_HOME=/home/workspacepredictionio/apache-predictionio-0.10.0-incubating,PIO_FS_ENGINESDIR=/root/.pio_store/engines,PIO_STORAGE_SOURCES_MYSQL_TYPE=jdbc,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=MYSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=MYSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_MYSQL_USERNAME=root,PIO_FS_TMPDIR=/root/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=MYSQL,PIO_CONF_DIR=/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/conf
[INFO] [Engine] Extracting datasource params...
[INFO] [WorkflowUtils$] No 'name' is found. Default empty String will be used.
[INFO] [Engine] Datasource params: (,DataSourceParams(MyApp1,None))
[INFO] [Engine] Extracting preparator params...
[INFO] [Engine] Preparator params: (,Empty)
[INFO] [Engine] Extracting serving params...
[INFO] [Engine] Serving params: (,Empty)
[INFO] [Remoting] Starting remoting
[INFO] [Remoting] Remoting started; listening on addresses :[akka.tcp://sparkDriver@127.0.0.1:57469]
[WARN] [MetricsSystem] Using default name DAGScheduler for source because spark.app.id is not set.
[INFO] [Engine$] EngineWorkflow.train
[INFO] [Engine$] DataSource: com.reco.DataSource@9dada78
[INFO] [Engine$] Preparator: com.reco.Preparator@57efc6fd
[INFO] [Engine$] AlgorithmList: List(com.reco.ALSAlgorithm@4e3e11b9)
[INFO] [Engine$] Data sanity check is on.
[INFO] [Engine$] com.reco.TrainingData does not support data sanity check. Skipping check.
[INFO] [Engine$] com.reco.PreparedData does not support data sanity check. Skipping check.
[WARN] [BLAS] Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
[WARN] [BLAS] Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
[WARN] [LAPACK] Failed to load implementation from: com.github.fommil.netlib.NativeSystemLAPACK
[WARN] [LAPACK] Failed to load implementation from: com.github.fommil.netlib.NativeRefLAPACK
[INFO] [Engine$] org.apache.spark.mllib.recommendation.ALSModel does not support data sanity check. Skipping check.
[INFO] [Engine$] EngineWorkflow.train completed
[INFO] [Engine] engineInstanceId=d8d66503-e43a-4c2d-9b0d-8cd2373d0dff
[INFO] [CoreWorkflow$] Inserting persistent model
[INFO] [CoreWorkflow$] Updating engine instance
[INFO] [CoreWorkflow$] Training completed successfully.
2. deploy
[INFO] [Runner$] Submission command: /home/workspacepredictionio/apache-predictionio-0.10.0-incubating/vendors/spark-1.5.1-bin-hadoop2.6/bin/spark-submit --class org.apache.predictionio.workflow.CreateServer --jars file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/MyRecommendation/target/scala-2.10/template-scala-parallel-recommendation-assembly-0.1-SNAPSHOT-deps.jar,file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/MyRecommendation/target/scala-2.10/template-scala-parallel-recommendation_2.10-0.1-SNAPSHOT.jar --files file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/conf/log4j.properties --driver-class-path /home/workspacepredictionio/apache-predictionio-0.10.0-incubating/conf:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/lib/postgresql-9.4-1204.jdbc41.jar:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/lib/mysql-connector-java-5.1.37.jar file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/assembly/pio-assembly-0.10.0-incubating.jar --engineInstanceId d8d66503-e43a-4c2d-9b0d-8cd2373d0dff --engine-variant file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/MyRecommendation/engine.json --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_MYSQL_PASSWORD=root,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/root/.pio_store,PIO_STORAGE_SOURCES_MYSQL_URL=jdbc:mysql://192.168.107.1:3306/pio,PIO_HOME=/home/workspacepredictionio/apache-predictionio-0.10.0-incubating,PIO_FS_ENGINESDIR=/root/.pio_store/engines,PIO_STORAGE_SOURCES_MYSQL_TYPE=jdbc,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=MYSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=MYSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_MYSQL_USERNAME=root,PIO_FS_TMPDIR=/root/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=MYSQL,PIO_CONF_DIR=/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/conf
[WARN] [WorkflowUtils$] Non-empty parameters supplied to com.reco.Preparator, but its constructor does not accept any arguments. Stubbing with empty parameters.
[WARN] [WorkflowUtils$] Non-empty parameters supplied to com.reco.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
[INFO] [Remoting] Starting remoting
[INFO] [Remoting] Remoting started; listening on addresses :[akka.tcp://sparkDriver@127.0.0.1:41579]
[WARN] [MetricsSystem] Using default name DAGScheduler for source because spark.app.id is not set.
[INFO] [Engine] Using persisted model
[INFO] [Engine] Custom-persisted model detected for algorithm com.reco.ALSAlgorithm
[WARN] [ALSModel] User factor does not have a partitioner. Prediction on individual records could be slow.
[WARN] [ALSModel] User factor is not cached. Prediction could be slow.
[WARN] [ALSModel] Product factor does not have a partitioner. Prediction on individual records could be slow.
[WARN] [ALSModel] Product factor is not cached. Prediction could be slow.
[INFO] [MasterActor] Undeploying any existing engine instance at http://0.0.0.0:8000
[ERROR] [MasterActor] Another process might be occupying 0.0.0.0:8000. Unable to undeploy.
[INFO] [HttpListener] Bound to /0.0.0.0:8000
[INFO] [MasterActor] Engine is deployed and running. Engine API is live at http://0.0.0.0:8000.
3. eval
> com.reco.EngineParamsList
[INFO] [Console$] Using existing engine manifest JSON at /home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/MyRecommendation/manifest.json
[INFO] [Runner$] Submission command: /home/workspacepredictionio/apache-predictionio-0.10.0-incubating/vendors/spark-1.5.1-bin-hadoop2.6/bin/spark-submit --class org.apache.predictionio.workflow.CreateWorkflow --jars file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/MyRecommendation/target/scala-2.10/template-scala-parallel-recommendation-assembly-0.1-SNAPSHOT-deps.jar,file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/MyRecommendation/target/scala-2.10/template-scala-parallel-recommendation_2.10-0.1-SNAPSHOT.jar --files file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/conf/log4j.properties --driver-class-path /home/workspacepredictionio/apache-predictionio-0.10.0-incubating/conf:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/lib/postgresql-9.4-1204.jdbc41.jar:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/lib/mysql-connector-java-5.1.37.jar file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/assembly/pio-assembly-0.10.0-incubating.jar --engine-id EaX0g27pu0MJruMHAnacq7VfNDiGMx7h --engine-version b6d0beede5fb6bb095015d9d26c90768d48c5428 --engine-variant file:/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/bin/MyRecommendation/engine.json --verbosity 0 --evaluation-class com.reco.RecommendationEvaluation --engine-params-generator-class com.reco.EngineParamsList --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_MYSQL_PASSWORD=root,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/root/.pio_store,PIO_STORAGE_SOURCES_MYSQL_URL=jdbc:mysql://192.168.107.1:3306/pio,PIO_HOME=/home/workspacepredictionio/apache-predictionio-0.10.0-incubating,PIO_FS_ENGINESDIR=/root/.pio_store/engines,PIO_STORAGE_SOURCES_MYSQL_TYPE=jdbc,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=MYSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=MYSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_MYSQL_USERNAME=root,PIO_FS_TMPDIR=/root/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=MYSQL,PIO_CONF_DIR=/home/workspacepredictionio/apache-predictionio-0.10.0-incubating/conf
[INFO] [CoreWorkflow$] runEvaluation started
[INFO] [Remoting] Starting remoting
[INFO] [Remoting] Remoting started; listening on addresses :[akka.tcp://sparkDriver@127.0.0.1:35291]
[WARN] [MetricsSystem] Using default name DAGScheduler for source because spark.app.id is not set.
[INFO] [CoreWorkflow$] Starting evaluation instance ID: 0cbd25f8-e7c2-439e-b808-f69c69e8f4e4
[INFO] [Engine$] DataSource: com.reco.DataSource@470d183
[INFO] [Engine$] Preparator: com.reco.Preparator@3e7b65d7
[INFO] [Engine$] AlgorithmList: List(com.reco.ALSAlgorithm@1a500561)
[INFO] [Engine$] Serving: com.reco.Serving@210d2a6c
[ERROR] [Common$] Invalid app name INVALID_APP_NAME
Exception in thread "main" java.lang.IllegalArgumentException: Invalid app name INVALID_APP_NAME
at org.apache.predictionio.data.store.Common$$anonfun$appNameToId$2.apply(Common.scala:50)
at org.apache.predictionio.data.store.Common$$anonfun$appNameToId$2.apply(Common.scala:48)
at scala.Option.getOrElse(Option.scala:120)
at org.apache.predictionio.data.store.Common$.appNameToId(Common.scala:48)
at org.apache.predictionio.data.store.PEventStore$.find(PEventStore.scala:71)
at com.reco.DataSource.getRatings(DataSource.scala:35)
at com.reco.DataSource.readEval(DataSource.scala:72)
at org.apache.predictionio.controller.PDataSource.readEvalBase(PDataSource.scala:45)
at org.apache.predictionio.controller.Engine$.eval(Engine.scala:748)
at org.apache.predictionio.controller.Engine.eval(Engine.scala:354)
at org.apache.predictionio.core.BaseEngine$$anonfun$batchEval$1.apply(BaseEngine.scala:88)
at org.apache.predictionio.core.BaseEngine$$anonfun$batchEval$1.apply(BaseEngine.scala:87)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.immutable.List.foreach(List.scala:318)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at org.apache.predictionio.core.BaseEngine.batchEval(BaseEngine.scala:87)
at org.apache.predictionio.workflow.EvaluationWorkflow$.runEvaluation(EvaluationWorkflow.scala:42)
at org.apache.predictionio.workflow.CoreWorkflow$.runEvaluation(CoreWorkflow.scala:130)
at org.apache.predictionio.workflow.Workflow$.runEvaluationViaCoreWorkflow(Workflow.scala:129)
at org.apache.predictionio.workflow.Workflow$.runEvaluationTypeless(Workflow.scala:109)
at org.apache.predictionio.workflow.Workflow$.runEvaluation(Workflow.scala:89)
at org.apache.predictionio.workflow.CreateWorkflow$.main(CreateWorkflow.scala:270)
at org.apache.predictionio.workflow.CreateWorkflow.main(CreateWorkflow.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:672)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:120)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)