gitextract_wm7b4ll_/ ├── .gitattributes ├── .gitignore ├── .travis.yml ├── CONTRIBUTING.md ├── Dockerfile ├── KEYS ├── LICENSE.txt ├── NOTICE.txt ├── PMC.md ├── README.md ├── RELEASE.md ├── assembly/ │ ├── build.sbt │ └── src/ │ ├── debian/ │ │ └── DEBIAN/ │ │ ├── postrm │ │ └── preinst │ └── rpm/ │ └── scriptlets/ │ ├── postun │ └── preinst ├── bin/ │ ├── cjson │ ├── compute-classpath.sh │ ├── install.sh │ ├── load-pio-env.sh │ ├── pio │ ├── pio-class │ ├── pio-daemon │ ├── pio-shell │ ├── pio-start-all │ ├── pio-stop-all │ ├── semver.sh │ └── travis/ │ ├── pio-start-travis │ └── pio-stop-travis ├── build.sbt ├── common/ │ ├── build.sbt │ └── src/ │ └── main/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── predictionio/ │ │ └── annotation/ │ │ ├── DeveloperApi.java │ │ └── Experimental.java │ ├── resources/ │ │ └── application.conf │ └── scala/ │ └── org/ │ └── apache/ │ └── predictionio/ │ ├── akkahttpjson4s/ │ │ └── Json4sSupport.scala │ ├── authentication/ │ │ └── KeyAuthentication.scala │ └── configuration/ │ └── SSLConfiguration.scala ├── conf/ │ ├── keystore.jks │ ├── log4j.properties │ ├── pio-env.sh.template │ ├── pio-env.sh.travis │ ├── pio-vendors.sh │ └── server.conf ├── core/ │ ├── build.sbt │ └── src/ │ ├── main/ │ │ ├── scala/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── predictionio/ │ │ │ ├── controller/ │ │ │ │ ├── CustomQuerySerializer.scala │ │ │ │ ├── Deployment.scala │ │ │ │ ├── Engine.scala │ │ │ │ ├── EngineFactory.scala │ │ │ │ ├── EngineParams.scala │ │ │ │ ├── EngineParamsGenerator.scala │ │ │ │ ├── Evaluation.scala │ │ │ │ ├── FastEvalEngine.scala │ │ │ │ ├── IdentityPreparator.scala │ │ │ │ ├── LAlgorithm.scala │ │ │ │ ├── LAverageServing.scala │ │ │ │ ├── LDataSource.scala │ │ │ │ ├── LFirstServing.scala │ │ │ │ ├── LPreparator.scala │ │ │ │ ├── LServing.scala │ │ │ │ ├── LocalFileSystemPersistentModel.scala │ │ │ │ ├── Metric.scala │ │ │ │ ├── MetricEvaluator.scala │ │ │ │ ├── P2LAlgorithm.scala │ │ │ │ ├── PAlgorithm.scala │ │ │ │ ├── PDataSource.scala │ │ │ │ ├── PPreparator.scala │ │ │ │ ├── Params.scala │ │ │ │ ├── PersistentModel.scala │ │ │ │ ├── SanityCheck.scala │ │ │ │ ├── Utils.scala │ │ │ │ ├── java/ │ │ │ │ │ ├── JavaEngineParamsGenerator.scala │ │ │ │ │ ├── JavaEvaluation.scala │ │ │ │ │ ├── LJavaAlgorithm.scala │ │ │ │ │ ├── LJavaDataSource.scala │ │ │ │ │ ├── LJavaPreparator.scala │ │ │ │ │ ├── LJavaServing.scala │ │ │ │ │ ├── P2LJavaAlgorithm.scala │ │ │ │ │ ├── PJavaAlgorithm.scala │ │ │ │ │ ├── PJavaDataSource.scala │ │ │ │ │ ├── PJavaPreparator.scala │ │ │ │ │ └── SerializableComparator.scala │ │ │ │ └── package.scala │ │ │ ├── core/ │ │ │ │ ├── AbstractDoer.scala │ │ │ │ ├── BaseAlgorithm.scala │ │ │ │ ├── BaseDataSource.scala │ │ │ │ ├── BaseEngine.scala │ │ │ │ ├── BaseEvaluator.scala │ │ │ │ ├── BasePreparator.scala │ │ │ │ ├── BaseServing.scala │ │ │ │ ├── SelfCleaningDataSource.scala │ │ │ │ └── package.scala │ │ │ ├── package.scala │ │ │ └── workflow/ │ │ │ ├── BatchPredict.scala │ │ │ ├── CleanupFunctions.scala │ │ │ ├── CoreWorkflow.scala │ │ │ ├── CreateServer.scala │ │ │ ├── CreateWorkflow.scala │ │ │ ├── EngineServerPlugin.scala │ │ │ ├── EngineServerPluginContext.scala │ │ │ ├── EngineServerPluginsActor.scala │ │ │ ├── EvaluationWorkflow.scala │ │ │ ├── FakeWorkflow.scala │ │ │ ├── JsonExtractor.scala │ │ │ ├── JsonExtractorOption.scala │ │ │ ├── PersistentModelManifest.scala │ │ │ ├── Workflow.scala │ │ │ ├── WorkflowContext.scala │ │ │ ├── WorkflowParams.scala │ │ │ └── WorkflowUtils.scala │ │ └── twirl/ │ │ └── org/ │ │ └── apache/ │ │ └── predictionio/ │ │ ├── controller/ │ │ │ └── metric_evaluator.scala.html │ │ └── workflow/ │ │ └── index.scala.html │ └── test/ │ ├── java/ │ │ └── org/ │ │ └── apache/ │ │ └── predictionio/ │ │ └── workflow/ │ │ ├── JavaParams.java │ │ ├── JavaQuery.java │ │ └── JavaQueryTypeAdapterFactory.java │ └── scala/ │ └── org/ │ └── apache/ │ └── predictionio/ │ ├── controller/ │ │ ├── EngineTest.scala │ │ ├── EvaluationTest.scala │ │ ├── EvaluatorTest.scala │ │ ├── FastEvalEngineTest.scala │ │ ├── MetricEvaluatorTest.scala │ │ ├── MetricTest.scala │ │ └── SampleEngine.scala │ ├── core/ │ │ ├── SelfCleaningDataSourceTest.scala │ │ └── test.json │ └── workflow/ │ ├── BaseTest.scala │ ├── EngineWorkflowTest.scala │ ├── EvaluationWorkflowTest.scala │ └── JsonExtractorSuite.scala ├── data/ │ ├── README.md │ ├── build.sbt │ ├── src/ │ │ ├── main/ │ │ │ └── scala/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── predictionio/ │ │ │ └── data/ │ │ │ ├── Utils.scala │ │ │ ├── api/ │ │ │ │ ├── Common.scala │ │ │ │ ├── EventInfo.scala │ │ │ │ ├── EventServer.scala │ │ │ │ ├── EventServerPlugin.scala │ │ │ │ ├── EventServerPluginContext.scala │ │ │ │ ├── PluginsActor.scala │ │ │ │ ├── Stats.scala │ │ │ │ ├── StatsActor.scala │ │ │ │ ├── Webhooks.scala │ │ │ │ └── WebhooksConnectors.scala │ │ │ ├── package.scala │ │ │ ├── storage/ │ │ │ │ ├── AccessKeys.scala │ │ │ │ ├── Apps.scala │ │ │ │ ├── BiMap.scala │ │ │ │ ├── Channels.scala │ │ │ │ ├── DataMap.scala │ │ │ │ ├── DateTimeJson4sSupport.scala │ │ │ │ ├── EngineInstances.scala │ │ │ │ ├── EntityMap.scala │ │ │ │ ├── EvaluationInstances.scala │ │ │ │ ├── Event.scala │ │ │ │ ├── EventJson4sSupport.scala │ │ │ │ ├── LEventAggregator.scala │ │ │ │ ├── LEvents.scala │ │ │ │ ├── Models.scala │ │ │ │ ├── PEventAggregator.scala │ │ │ │ ├── PEvents.scala │ │ │ │ ├── PropertyMap.scala │ │ │ │ ├── Storage.scala │ │ │ │ ├── Utils.scala │ │ │ │ └── package.scala │ │ │ ├── store/ │ │ │ │ ├── Common.scala │ │ │ │ ├── LEventStore.scala │ │ │ │ ├── PEventStore.scala │ │ │ │ ├── java/ │ │ │ │ │ ├── LJavaEventStore.scala │ │ │ │ │ ├── OptionHelper.scala │ │ │ │ │ └── PJavaEventStore.scala │ │ │ │ ├── package.scala │ │ │ │ └── python/ │ │ │ │ └── PPythonEventStore.scala │ │ │ ├── view/ │ │ │ │ ├── DataView.scala │ │ │ │ ├── LBatchView.scala │ │ │ │ ├── PBatchView.scala │ │ │ │ └── QuickTest.scala │ │ │ └── webhooks/ │ │ │ ├── ConnectorException.scala │ │ │ ├── ConnectorUtil.scala │ │ │ ├── FormConnector.scala │ │ │ ├── JsonConnector.scala │ │ │ ├── exampleform/ │ │ │ │ └── ExampleFormConnector.scala │ │ │ ├── examplejson/ │ │ │ │ └── ExampleJsonConnector.scala │ │ │ ├── mailchimp/ │ │ │ │ └── MailChimpConnector.scala │ │ │ └── segmentio/ │ │ │ └── SegmentIOConnector.scala │ │ └── test/ │ │ ├── resources/ │ │ │ └── application.conf │ │ └── scala/ │ │ └── org/ │ │ └── apache/ │ │ └── predictionio/ │ │ └── data/ │ │ ├── api/ │ │ │ ├── EventServiceSpec.scala │ │ │ └── SegmentIOAuthSpec.scala │ │ ├── storage/ │ │ │ ├── BiMapSpec.scala │ │ │ ├── DataMapSpec.scala │ │ │ ├── LEventAggregatorSpec.scala │ │ │ ├── PEventAggregatorSpec.scala │ │ │ ├── StorageMockContext.scala │ │ │ └── TestEvents.scala │ │ └── webhooks/ │ │ ├── ConnectorTestUtil.scala │ │ ├── exampleform/ │ │ │ └── ExampleFormConnectorSpec.scala │ │ ├── examplejson/ │ │ │ └── ExampleJsonConnectorSpec.scala │ │ ├── mailchimp/ │ │ │ └── MailChimpConnectorSpec.scala │ │ └── segmentio/ │ │ └── SegmentIOConnectorSpec.scala │ ├── test-form.sh │ ├── test-normal.sh │ ├── test-segmentio.sh │ ├── test.sh │ ├── test2.sh │ ├── test3.sh │ └── very_long_batch_request.txt ├── doap.rdf ├── docker/ │ ├── .ivy2/ │ │ └── .keep │ ├── JUPYTER.md │ ├── README.md │ ├── bin/ │ │ └── pio-docker │ ├── charts/ │ │ ├── README.md │ │ ├── postgresql.yaml │ │ ├── predictionio/ │ │ │ ├── .helmignore │ │ │ ├── Chart.yaml │ │ │ ├── templates/ │ │ │ │ ├── NOTES.txt │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── pio-deployment.yaml │ │ │ │ └── pio-service.yaml │ │ │ └── values.yaml │ │ ├── predictionio_postgresql.yaml │ │ └── spark/ │ │ ├── .helmignore │ │ ├── Chart.yaml │ │ ├── README.md │ │ ├── templates/ │ │ │ ├── NOTES.txt │ │ │ ├── _helpers.tpl │ │ │ ├── spark-master-deployment.yaml │ │ │ ├── spark-sql-test.yaml │ │ │ ├── spark-worker-deployment.yaml │ │ │ └── spark-worker-hpa.yaml │ │ └── values.yaml │ ├── deploy/ │ │ └── run.sh │ ├── docker-compose.deploy.yml │ ├── docker-compose.jupyter.yml │ ├── docker-compose.spark.yml │ ├── docker-compose.yml │ ├── elasticsearch/ │ │ ├── docker-compose.base.yml │ │ ├── docker-compose.event.yml │ │ └── docker-compose.meta.yml │ ├── jupyter/ │ │ ├── Dockerfile │ │ ├── fix-permissions │ │ ├── jupyter_notebook_config.py │ │ ├── requirements.txt │ │ ├── start-jupyter.sh │ │ └── start.sh │ ├── localfs/ │ │ └── docker-compose.model.yml │ ├── mysql/ │ │ ├── docker-compose.base.yml │ │ ├── docker-compose.event.yml │ │ ├── docker-compose.meta.yml │ │ └── docker-compose.model.yml │ ├── pgsql/ │ │ ├── docker-compose.base.yml │ │ ├── docker-compose.event.yml │ │ ├── docker-compose.meta.yml │ │ └── docker-compose.model.yml │ ├── pio/ │ │ ├── Dockerfile │ │ └── pio_run │ └── templates/ │ └── .keep ├── docs/ │ ├── javadoc/ │ │ ├── README.md │ │ └── javadoc-overview.html │ ├── manual/ │ │ ├── .gitignore │ │ ├── Gemfile │ │ ├── Rakefile │ │ ├── bower.json │ │ ├── config.rb │ │ ├── data/ │ │ │ ├── nav/ │ │ │ │ ├── build.yml │ │ │ │ └── main.yml │ │ │ └── versions.yml │ │ ├── helpers/ │ │ │ ├── application_helpers.rb │ │ │ ├── breadcrumb_helpers.rb │ │ │ ├── icon_helpers.rb │ │ │ ├── table_of_contents_helpers.rb │ │ │ └── url_helpers.rb │ │ ├── lib/ │ │ │ ├── custom_renderer.rb │ │ │ └── gallery_generator.rb │ │ └── source/ │ │ ├── 404.html.md │ │ ├── algorithm/ │ │ │ ├── custom.html.md │ │ │ ├── index.html.md │ │ │ ├── multiple.html.md │ │ │ └── switch.html.md │ │ ├── appintegration/ │ │ │ └── index.html.md │ │ ├── archived/ │ │ │ ├── community.html.md │ │ │ ├── index.html.md │ │ │ ├── install-linux.html.md.erb │ │ │ ├── install-vagrant.html.md.erb │ │ │ ├── launch-aws.html.md.erb │ │ │ ├── supervisedlearning.html.md │ │ │ └── tapster.html.md │ │ ├── batchpredict/ │ │ │ └── index.html.md │ │ ├── cli/ │ │ │ └── index.html.md │ │ ├── community/ │ │ │ ├── contribute-code.html.md │ │ │ ├── contribute-documentation.html.md │ │ │ ├── contribute-sdk.html.md │ │ │ ├── contribute-webhook.html.md │ │ │ ├── index.html.md │ │ │ ├── projects.html.md │ │ │ └── submit-template.html.md │ │ ├── customize/ │ │ │ ├── dase.html.md.erb │ │ │ ├── index.html.md │ │ │ └── troubleshooting.html.md │ │ ├── datacollection/ │ │ │ ├── analytics-ipynb.html.md.erb │ │ │ ├── analytics-tableau.html.md.erb │ │ │ ├── analytics-zeppelin.html.md.erb │ │ │ ├── analytics.html.md │ │ │ ├── batchimport.html.md │ │ │ ├── channel.html.md.erb │ │ │ ├── eventapi.html.md │ │ │ ├── eventmodel.html.md.erb │ │ │ ├── index.html.md │ │ │ ├── plugin.html.md │ │ │ └── webhooks.html.md.erb │ │ ├── demo/ │ │ │ ├── index.html.md.erb │ │ │ └── textclassification.html.md.erb │ │ ├── deploy/ │ │ │ ├── engineparams.html.md │ │ │ ├── enginevariants.html.md │ │ │ ├── index.html.md │ │ │ ├── monitoring.html.md │ │ │ └── plugin.html.md │ │ ├── evaluation/ │ │ │ ├── evaluationdashboard.html.md │ │ │ ├── history.html.md │ │ │ ├── index.html.md │ │ │ ├── metricbuild.html.md │ │ │ ├── metricchoose.html.md │ │ │ └── paramtuning.html.md │ │ ├── gallery/ │ │ │ └── templates.yaml │ │ ├── github.html │ │ ├── index.html.md.erb │ │ ├── install/ │ │ │ ├── index.html.md.erb │ │ │ ├── install-docker.html.md.erb │ │ │ ├── install-sourcecode.html.md.erb │ │ │ └── sdk.html.md │ │ ├── javascripts/ │ │ │ ├── application.js │ │ │ └── tryit.js │ │ ├── layouts/ │ │ │ ├── layout.html.slim │ │ │ └── tryit.html.slim │ │ ├── machinelearning/ │ │ │ ├── dimensionalityreduction.html.md │ │ │ └── modelingworkflow.html.md │ │ ├── partials/ │ │ │ ├── _action_call.html.slim │ │ │ ├── _edit_page.html.slim │ │ │ ├── _footer.html.slim │ │ │ ├── _header.html.slim │ │ │ ├── _search_bar.html.slim │ │ │ ├── _segment.html.slim │ │ │ ├── _swiftype.html.slim │ │ │ ├── _table_of_content.html.slim │ │ │ ├── head/ │ │ │ │ ├── _base.html.slim │ │ │ │ ├── _favicon.html.slim │ │ │ │ ├── _javascripts.html.slim │ │ │ │ ├── _meta.html.slim │ │ │ │ └── _stylesheets.html.slim │ │ │ ├── nav/ │ │ │ │ ├── _breadcrumbs.html.slim │ │ │ │ ├── _header.html.slim │ │ │ │ ├── _main.html.slim │ │ │ │ ├── _node.html.slim │ │ │ │ ├── _page.html.slim │ │ │ │ └── _swiftype.html.slim │ │ │ └── shared/ │ │ │ ├── dase/ │ │ │ │ └── _dase.html.md.erb │ │ │ ├── datacollection/ │ │ │ │ └── _parquet.html.md.erb │ │ │ ├── install/ │ │ │ │ ├── _dependent_services.html.erb │ │ │ │ ├── _elasticsearch.html.erb │ │ │ │ ├── _hbase.html.erb │ │ │ │ ├── _postgres.html.erb │ │ │ │ ├── _proceed_template.html.md.erb │ │ │ │ └── _spark.html.erb │ │ │ └── quickstart/ │ │ │ ├── _collect_data.html.md.erb │ │ │ ├── _create_app.html.md.erb │ │ │ ├── _create_engine.html.md.erb │ │ │ ├── _deploy.html.md.erb │ │ │ ├── _deploy_enginejson.html.md.erb │ │ │ ├── _import_sample_data.html.md.erb │ │ │ ├── _install.html.md.erb │ │ │ ├── _install_python_sdk.html.md.erb │ │ │ ├── _install_sdk.html.md.erb │ │ │ ├── _production.html.md.erb │ │ │ ├── _query_eventserver.html.md.erb │ │ │ └── _query_eventserver_short.html.md.erb │ │ ├── production/ │ │ │ └── deploy-cloudformation.html.md │ │ ├── resources/ │ │ │ ├── faq.html.md │ │ │ ├── glossary.html.md │ │ │ ├── intellij.html.md.erb │ │ │ ├── release.html.md │ │ │ └── upgrade.html.md │ │ ├── robots.txt │ │ ├── samples/ │ │ │ ├── index.html.md │ │ │ ├── languages.html.md │ │ │ ├── level-1.html.md │ │ │ ├── level-2-1.html.md │ │ │ ├── level-2-2.html.md │ │ │ ├── level-2.html.md │ │ │ ├── level-3-1.html.md │ │ │ ├── level-3-2.html.md │ │ │ ├── level-3.html.md │ │ │ ├── level-4-1.html.md │ │ │ ├── level-4-2.html.md │ │ │ ├── level-4-3.html.md │ │ │ ├── level-4.html.md │ │ │ ├── narrow.html.md │ │ │ ├── sizing.html.md │ │ │ └── tabs.html.md │ │ ├── sdk/ │ │ │ ├── index.html.md │ │ │ ├── java.html.md.erb │ │ │ ├── php.html.md.erb │ │ │ ├── python.html.md.erb │ │ │ └── ruby.html.md.erb │ │ ├── search/ │ │ │ └── index.html.md │ │ ├── start/ │ │ │ ├── customize.html.md │ │ │ ├── deploy.html.md.erb │ │ │ ├── download.html.md │ │ │ └── index.html.md │ │ ├── stylesheets/ │ │ │ ├── application.css.scss │ │ │ ├── mixins/ │ │ │ │ └── _all.css.scss │ │ │ ├── partials/ │ │ │ │ ├── _action_call.css.scss │ │ │ │ ├── _alerts.css.scss │ │ │ │ ├── _breadcrumbs.css.scss │ │ │ │ ├── _buttons.css.scss │ │ │ │ ├── _classes.css.scss │ │ │ │ ├── _code.css.scss │ │ │ │ ├── _content.css.scss │ │ │ │ ├── _copyright.css.scss │ │ │ │ ├── _edit_page.css.scss │ │ │ │ ├── _footer.css.scss │ │ │ │ ├── _global.css.scss │ │ │ │ ├── _hacks.css.scss │ │ │ │ ├── _header.css.scss │ │ │ │ ├── _hybird_vim_highlight.css.scss │ │ │ │ ├── _jcarousel.css.scss │ │ │ │ ├── _layout.css.scss │ │ │ │ ├── _modules.css.scss │ │ │ │ ├── _off_canvas.css.scss │ │ │ │ ├── _page_title.css.scss │ │ │ │ ├── _responsive.css.scss │ │ │ │ ├── _search_bar_row.css.scss │ │ │ │ ├── _subscribe_form.css.scss │ │ │ │ ├── _table_of_contents.css.scss │ │ │ │ ├── _tables.css.scss │ │ │ │ ├── _tabs.css.scss │ │ │ │ ├── _tags.css.scss │ │ │ │ ├── _tryit.css.scss │ │ │ │ └── nav/ │ │ │ │ ├── _header.css.scss │ │ │ │ ├── _main.css.scss │ │ │ │ ├── _page.css.scss │ │ │ │ └── _swiftype.css.scss │ │ │ └── variables/ │ │ │ ├── _colors.css.scss │ │ │ ├── _fonts.css.scss │ │ │ └── _sizes.css.scss │ │ ├── support/ │ │ │ └── index.html.md.erb │ │ ├── system/ │ │ │ ├── anotherdatastore.html.md │ │ │ ├── deploy-cloudformation.html.md.erb │ │ │ └── index.html.md │ │ ├── templates/ │ │ │ ├── classification/ │ │ │ │ ├── add-algorithm.html.md │ │ │ │ ├── dase.html.md.erb │ │ │ │ ├── how-to.html.md │ │ │ │ ├── quickstart.html.md.erb │ │ │ │ └── reading-custom-properties.html.md │ │ │ ├── complementarypurchase/ │ │ │ │ ├── dase.html.md.erb │ │ │ │ └── quickstart.html.md.erb │ │ │ ├── ecommercerecommendation/ │ │ │ │ ├── adjust-score.html.md.erb │ │ │ │ ├── dase.html.md.erb │ │ │ │ ├── how-to.html.md │ │ │ │ ├── quickstart.html.md.erb │ │ │ │ └── train-with-rate-event.html.md.erb │ │ │ ├── index.html.md │ │ │ ├── javaecommercerecommendation/ │ │ │ │ ├── dase.html.md.erb │ │ │ │ └── quickstart.html.md.erb │ │ │ ├── leadscoring/ │ │ │ │ ├── dase.html.md.erb │ │ │ │ └── quickstart.html.md.erb │ │ │ ├── productranking/ │ │ │ │ ├── dase.html.md.erb │ │ │ │ └── quickstart.html.md.erb │ │ │ ├── recommendation/ │ │ │ │ ├── batch-evaluator.html.md │ │ │ │ ├── blacklist-items.html.md │ │ │ │ ├── customize-data-prep.html.md │ │ │ │ ├── customize-serving.html.md │ │ │ │ ├── dase.html.md.erb │ │ │ │ ├── evaluation.html.md.erb │ │ │ │ ├── how-to.html.md │ │ │ │ ├── quickstart.html.md.erb │ │ │ │ ├── reading-custom-events.html.md │ │ │ │ └── training-with-implicit-preference.html.md │ │ │ ├── similarproduct/ │ │ │ │ ├── dase.html.md.erb │ │ │ │ ├── how-to.html.md │ │ │ │ ├── multi-events-multi-algos.html.md.erb │ │ │ │ ├── quickstart.html.md.erb │ │ │ │ ├── recommended-user.html.md.erb │ │ │ │ ├── return-item-properties.html.md.erb │ │ │ │ ├── rid-user-set-event.html.md.erb │ │ │ │ └── train-with-rate-event.html.md.erb │ │ │ └── vanilla/ │ │ │ ├── dase.html.md.erb │ │ │ └── quickstart.html.md.erb │ │ └── tryit/ │ │ └── index.html.slim │ └── scaladoc/ │ ├── README.md │ ├── api-docs.css │ ├── api-docs.js │ └── rootdoc.txt ├── e2/ │ ├── build.sbt │ └── src/ │ ├── main/ │ │ └── scala/ │ │ └── org/ │ │ └── apache/ │ │ └── predictionio/ │ │ ├── e2/ │ │ │ ├── engine/ │ │ │ │ ├── BinaryVectorizer.scala │ │ │ │ ├── CategoricalNaiveBayes.scala │ │ │ │ ├── MarkovChain.scala │ │ │ │ └── PythonEngine.scala │ │ │ ├── evaluation/ │ │ │ │ └── CrossValidation.scala │ │ │ └── package.scala │ │ └── package.scala │ └── test/ │ └── scala/ │ └── org/ │ └── apache/ │ └── predictionio/ │ └── e2/ │ ├── engine/ │ │ ├── BinaryVectorizerTest.scala │ │ ├── CategoricalNaiveBayesTest.scala │ │ └── MarkovChainTest.scala │ ├── evaluation/ │ │ └── CrossValidationTest.scala │ └── fixture/ │ ├── BinaryVectorizerFixture.scala │ ├── MarkovChainFixture.scala │ ├── NaiveBayesFixture.scala │ └── SharedSparkContext.scala ├── examples/ │ ├── redeploy-script/ │ │ ├── local.sh.template │ │ └── redeploy.sh │ ├── scala-parallel-classification/ │ │ ├── README.md │ │ ├── add-algorithm/ │ │ │ ├── .gitignore │ │ │ ├── build.sbt │ │ │ ├── data/ │ │ │ │ ├── data.txt │ │ │ │ └── import_eventserver.py │ │ │ ├── engine.json │ │ │ ├── project/ │ │ │ │ ├── assembly.sbt │ │ │ │ └── build.properties │ │ │ ├── src/ │ │ │ │ └── main/ │ │ │ │ └── scala/ │ │ │ │ ├── CompleteEvaluation.scala │ │ │ │ ├── DataSource.scala │ │ │ │ ├── Engine.scala │ │ │ │ ├── Evaluation.scala │ │ │ │ ├── NaiveBayesAlgorithm.scala │ │ │ │ ├── PrecisionEvaluation.scala │ │ │ │ ├── Preparator.scala │ │ │ │ ├── RandomForestAlgorithm.scala │ │ │ │ └── Serving.scala │ │ │ └── template.json │ │ └── reading-custom-properties/ │ │ ├── .gitignore │ │ ├── build.sbt │ │ ├── data/ │ │ │ ├── data.txt │ │ │ └── import_eventserver.py │ │ ├── engine.json │ │ ├── project/ │ │ │ ├── assembly.sbt │ │ │ └── build.properties │ │ ├── src/ │ │ │ └── main/ │ │ │ └── scala/ │ │ │ ├── CompleteEvaluation.scala │ │ │ ├── DataSource.scala │ │ │ ├── Engine.scala │ │ │ ├── Evaluation.scala │ │ │ ├── NaiveBayesAlgorithm.scala │ │ │ ├── PrecisionEvaluation.scala │ │ │ ├── Preparator.scala │ │ │ └── Serving.scala │ │ └── template.json │ ├── scala-parallel-ecommercerecommendation/ │ │ ├── README.md │ │ ├── adjust-score/ │ │ │ ├── .gitignore │ │ │ ├── build.sbt │ │ │ ├── data/ │ │ │ │ ├── import_eventserver.py │ │ │ │ └── send_query.py │ │ │ ├── engine.json │ │ │ ├── project/ │ │ │ │ ├── assembly.sbt │ │ │ │ └── build.properties │ │ │ ├── src/ │ │ │ │ └── main/ │ │ │ │ └── scala/ │ │ │ │ ├── DataSource.scala │ │ │ │ ├── ECommAlgorithm.scala │ │ │ │ ├── Engine.scala │ │ │ │ ├── Preparator.scala │ │ │ │ └── Serving.scala │ │ │ └── template.json │ │ └── train-with-rate-event/ │ │ ├── build.sbt │ │ ├── data/ │ │ │ ├── import_eventserver.py │ │ │ └── send_query.py │ │ ├── engine.json │ │ ├── project/ │ │ │ ├── assembly.sbt │ │ │ └── build.properties │ │ ├── src/ │ │ │ └── main/ │ │ │ └── scala/ │ │ │ ├── DataSource.scala │ │ │ ├── ECommAlgorithm.scala │ │ │ ├── Engine.scala │ │ │ ├── Preparator.scala │ │ │ └── Serving.scala │ │ └── template.json │ ├── scala-parallel-recommendation/ │ │ ├── README.md │ │ ├── blacklist-items/ │ │ │ ├── build.sbt │ │ │ ├── data/ │ │ │ │ ├── import_eventserver.py │ │ │ │ └── send_query.py │ │ │ ├── engine.json │ │ │ ├── project/ │ │ │ │ ├── assembly.sbt │ │ │ │ └── build.properties │ │ │ ├── src/ │ │ │ │ └── main/ │ │ │ │ └── scala/ │ │ │ │ ├── ALSAlgorithm.scala │ │ │ │ ├── ALSModel.scala │ │ │ │ ├── DataSource.scala │ │ │ │ ├── Engine.scala │ │ │ │ ├── Evaluation.scala │ │ │ │ ├── Preparator.scala │ │ │ │ └── Serving.scala │ │ │ └── template.json │ │ ├── customize-data-prep/ │ │ │ ├── .gitignore │ │ │ ├── build.sbt │ │ │ ├── data/ │ │ │ │ ├── import_eventserver.py │ │ │ │ ├── sample_not_train_data.txt │ │ │ │ └── send_query.py │ │ │ ├── engine.json │ │ │ ├── project/ │ │ │ │ ├── assembly.sbt │ │ │ │ └── build.properties │ │ │ ├── src/ │ │ │ │ └── main/ │ │ │ │ └── scala/ │ │ │ │ ├── ALSAlgorithm.scala │ │ │ │ ├── ALSModel.scala │ │ │ │ ├── DataSource.scala │ │ │ │ ├── Engine.scala │ │ │ │ ├── Evaluation.scala │ │ │ │ ├── Preparator.scala │ │ │ │ └── Serving.scala │ │ │ └── template.json │ │ ├── customize-serving/ │ │ │ ├── .gitignore │ │ │ ├── build.sbt │ │ │ ├── data/ │ │ │ │ ├── import_eventserver.py │ │ │ │ ├── sample_disabled_items.txt │ │ │ │ └── send_query.py │ │ │ ├── engine.json │ │ │ ├── project/ │ │ │ │ ├── assembly.sbt │ │ │ │ └── build.properties │ │ │ ├── src/ │ │ │ │ └── main/ │ │ │ │ └── scala/ │ │ │ │ ├── ALSAlgorithm.scala │ │ │ │ ├── ALSModel.scala │ │ │ │ ├── DataSource.scala │ │ │ │ ├── Engine.scala │ │ │ │ ├── Evaluation.scala │ │ │ │ ├── Preparator.scala │ │ │ │ └── Serving.scala │ │ │ └── template.json │ │ ├── reading-custom-events/ │ │ │ ├── .gitignore │ │ │ ├── build.sbt │ │ │ ├── data/ │ │ │ │ ├── import_eventserver.py │ │ │ │ └── send_query.py │ │ │ ├── engine.json │ │ │ ├── project/ │ │ │ │ ├── assembly.sbt │ │ │ │ └── build.properties │ │ │ ├── src/ │ │ │ │ └── main/ │ │ │ │ └── scala/ │ │ │ │ ├── ALSAlgorithm.scala │ │ │ │ ├── ALSModel.scala │ │ │ │ ├── DataSource.scala │ │ │ │ ├── Engine.scala │ │ │ │ ├── Evaluation.scala │ │ │ │ ├── Preparator.scala │ │ │ │ └── Serving.scala │ │ │ └── template.json │ │ └── train-with-view-event/ │ │ ├── .gitignore │ │ ├── build.sbt │ │ ├── data/ │ │ │ ├── import_eventserver.py │ │ │ └── send_query.py │ │ ├── engine.json │ │ ├── project/ │ │ │ ├── assembly.sbt │ │ │ └── build.properties │ │ ├── src/ │ │ │ └── main/ │ │ │ └── scala/ │ │ │ ├── ALSAlgorithm.scala │ │ │ ├── ALSModel.scala │ │ │ ├── DataSource.scala │ │ │ ├── Engine.scala │ │ │ ├── Evaluation.scala │ │ │ ├── Preparator.scala │ │ │ └── Serving.scala │ │ └── template.json │ └── scala-parallel-similarproduct/ │ ├── README.md │ ├── multi-events-multi-algos/ │ │ ├── .gitignore │ │ ├── build.sbt │ │ ├── data/ │ │ │ ├── import_eventserver.py │ │ │ └── send_query.py │ │ ├── engine-cooccurrence.json │ │ ├── engine.json │ │ ├── project/ │ │ │ ├── assembly.sbt │ │ │ └── build.properties │ │ ├── src/ │ │ │ └── main/ │ │ │ └── scala/ │ │ │ ├── ALSAlgorithm.scala │ │ │ ├── CooccurrenceAlgorithm.scala │ │ │ ├── DataSource.scala │ │ │ ├── Engine.scala │ │ │ ├── LikeAlgorithm.scala │ │ │ ├── Preparator.scala │ │ │ └── Serving.scala │ │ └── template.json │ ├── recommended-user/ │ │ ├── .gitignore │ │ ├── build.sbt │ │ ├── data/ │ │ │ ├── import_eventserver.py │ │ │ └── send_query.py │ │ ├── engine.json │ │ ├── project/ │ │ │ ├── assembly.sbt │ │ │ └── build.properties │ │ ├── src/ │ │ │ └── main/ │ │ │ └── scala/ │ │ │ ├── ALSAlgorithm.scala │ │ │ ├── DataSource.scala │ │ │ ├── Engine.scala │ │ │ ├── Preparator.scala │ │ │ └── Serving.scala │ │ └── template.json │ ├── return-item-properties/ │ │ ├── .gitignore │ │ ├── build.sbt │ │ ├── data/ │ │ │ ├── import_eventserver.py │ │ │ └── send_query.py │ │ ├── engine-cooccurrence.json │ │ ├── engine.json │ │ ├── project/ │ │ │ ├── assembly.sbt │ │ │ └── build.properties │ │ ├── src/ │ │ │ └── main/ │ │ │ └── scala/ │ │ │ ├── ALSAlgorithm.scala │ │ │ ├── CooccurrenceAlgorithm.scala │ │ │ ├── DataSource.scala │ │ │ ├── Engine.scala │ │ │ ├── Preparator.scala │ │ │ └── Serving.scala │ │ └── template.json │ ├── rid-user-set-event/ │ │ ├── .gitignore │ │ ├── build.sbt │ │ ├── data/ │ │ │ ├── import_eventserver.py │ │ │ └── send_query.py │ │ ├── engine-cooccurrence.json │ │ ├── engine.json │ │ ├── project/ │ │ │ ├── assembly.sbt │ │ │ └── build.properties │ │ ├── src/ │ │ │ └── main/ │ │ │ └── scala/ │ │ │ ├── ALSAlgorithm.scala │ │ │ ├── CooccurrenceAlgorithm.scala │ │ │ ├── DataSource.scala │ │ │ ├── Engine.scala │ │ │ ├── Preparator.scala │ │ │ └── Serving.scala │ │ └── template.json │ └── train-with-rate-event/ │ ├── build.sbt │ ├── data/ │ │ ├── import_eventserver.py │ │ └── send_query.py │ ├── engine-cooccurrence.json │ ├── engine.json │ ├── project/ │ │ ├── assembly.sbt │ │ └── build.properties │ ├── src/ │ │ └── main/ │ │ └── scala/ │ │ ├── ALSAlgorithm.scala │ │ ├── CooccurrenceAlgorithm.scala │ │ ├── DataSource.scala │ │ ├── Engine.scala │ │ ├── Preparator.scala │ │ └── Serving.scala │ └── template.json ├── make-distribution.sh ├── project/ │ ├── PIOBuild.scala │ ├── assembly.sbt │ ├── build.properties │ ├── plugins.sbt │ └── unidoc.sbt ├── python/ │ └── pypio/ │ ├── __init__.py │ ├── data/ │ │ ├── __init__.py │ │ └── eventstore.py │ ├── pypio.py │ ├── utils.py │ └── workflow/ │ ├── __init__.py │ └── cleanup_functions.py ├── sbt/ │ └── sbt ├── scalastyle-config.xml ├── storage/ │ ├── elasticsearch/ │ │ ├── .gitignore │ │ ├── build.sbt │ │ └── src/ │ │ ├── main/ │ │ │ └── scala/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── predictionio/ │ │ │ └── data/ │ │ │ └── storage/ │ │ │ └── elasticsearch/ │ │ │ ├── ESAccessKeys.scala │ │ │ ├── ESApps.scala │ │ │ ├── ESChannels.scala │ │ │ ├── ESEngineInstances.scala │ │ │ ├── ESEvaluationInstances.scala │ │ │ ├── ESEventsUtil.scala │ │ │ ├── ESLEvents.scala │ │ │ ├── ESPEvents.scala │ │ │ ├── ESSequences.scala │ │ │ ├── ESUtils.scala │ │ │ ├── StorageClient.scala │ │ │ └── package.scala │ │ └── test/ │ │ ├── resources/ │ │ │ └── application.conf │ │ └── scala/ │ │ └── org/ │ │ └── apache/ │ │ └── predictionio/ │ │ └── data/ │ │ └── storage/ │ │ └── elasticsearch/ │ │ ├── StorageClientSpec.scala │ │ └── StorageTestUtils.scala │ ├── hbase/ │ │ ├── .gitignore │ │ ├── build.sbt │ │ └── src/ │ │ ├── main/ │ │ │ └── scala/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── predictionio/ │ │ │ └── data/ │ │ │ └── storage/ │ │ │ └── hbase/ │ │ │ ├── HBEventsUtil.scala │ │ │ ├── HBLEvents.scala │ │ │ ├── HBPEvents.scala │ │ │ ├── PIOHBaseUtil.scala │ │ │ ├── StorageClient.scala │ │ │ └── package.scala │ │ └── test/ │ │ ├── resources/ │ │ │ └── application.conf │ │ └── scala/ │ │ └── org/ │ │ └── apache/ │ │ └── predictionio/ │ │ └── data/ │ │ └── storage/ │ │ └── hbase/ │ │ ├── LEventsSpec.scala │ │ ├── PEventsSpec.scala │ │ ├── StorageTestUtils.scala │ │ └── TestEvents.scala │ ├── hdfs/ │ │ ├── .gitignore │ │ ├── build.sbt │ │ ├── project/ │ │ │ └── build.properties │ │ └── src/ │ │ ├── main/ │ │ │ └── scala/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── predictionio/ │ │ │ └── data/ │ │ │ └── storage/ │ │ │ └── hdfs/ │ │ │ ├── HDFSModels.scala │ │ │ ├── StorageClient.scala │ │ │ └── package.scala │ │ └── test/ │ │ └── resources/ │ │ └── application.conf │ ├── jdbc/ │ │ ├── .gitignore │ │ ├── build.sbt │ │ └── src/ │ │ ├── main/ │ │ │ └── scala/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── predictionio/ │ │ │ └── data/ │ │ │ └── storage/ │ │ │ └── jdbc/ │ │ │ ├── JDBCAccessKeys.scala │ │ │ ├── JDBCApps.scala │ │ │ ├── JDBCChannels.scala │ │ │ ├── JDBCEngineInstances.scala │ │ │ ├── JDBCEvaluationInstances.scala │ │ │ ├── JDBCLEvents.scala │ │ │ ├── JDBCModels.scala │ │ │ ├── JDBCPEvents.scala │ │ │ ├── JDBCUtils.scala │ │ │ ├── StorageClient.scala │ │ │ └── package.scala │ │ └── test/ │ │ ├── resources/ │ │ │ └── application.conf │ │ └── scala/ │ │ └── org/ │ │ └── apache/ │ │ └── predictionio/ │ │ └── data/ │ │ └── storage/ │ │ └── jdbc/ │ │ ├── JDBCUtilsSpec.scala │ │ ├── LEventsSpec.scala │ │ ├── PEventsSpec.scala │ │ ├── StorageTestUtils.scala │ │ └── TestEvents.scala │ ├── localfs/ │ │ ├── .gitignore │ │ ├── build.sbt │ │ └── src/ │ │ ├── main/ │ │ │ └── scala/ │ │ │ └── org/ │ │ │ └── apache/ │ │ │ └── predictionio/ │ │ │ └── data/ │ │ │ └── storage/ │ │ │ └── localfs/ │ │ │ ├── LocalFSModels.scala │ │ │ ├── StorageClient.scala │ │ │ └── package.scala │ │ └── test/ │ │ └── resources/ │ │ └── application.conf │ └── s3/ │ ├── .gitignore │ ├── build.sbt │ └── src/ │ └── main/ │ └── scala/ │ └── org/ │ └── apache/ │ └── predictionio/ │ └── data/ │ └── storage/ │ └── s3/ │ ├── S3Models.scala │ ├── StorageClient.scala │ └── package.scala ├── tests/ │ ├── .rat-excludes │ ├── Dockerfile │ ├── Dockerfile.base │ ├── README.md │ ├── after_script.travis.sh │ ├── before_script.travis.sh │ ├── build_docker.sh │ ├── check_libraries.sh │ ├── check_license.sh │ ├── docker-compose.yml │ ├── docker-files/ │ │ ├── awscredentials │ │ ├── env-conf/ │ │ │ ├── hbase-site.xml │ │ │ └── pio-env.sh │ │ ├── init.sh │ │ ├── pgpass │ │ └── set_build_profile.sh │ ├── pio_tests/ │ │ ├── README.md │ │ ├── __init__.py │ │ ├── data/ │ │ │ ├── eventserver_test/ │ │ │ │ ├── partially_malformed_events.json │ │ │ │ ├── rate_events_25.json │ │ │ │ └── signup_events_51.json │ │ │ └── quickstart_test/ │ │ │ └── engine.json │ │ ├── engines/ │ │ │ └── recommendation-engine/ │ │ │ ├── README.md │ │ │ ├── build.sbt │ │ │ ├── engine.json │ │ │ ├── project/ │ │ │ │ └── assembly.sbt │ │ │ ├── src/ │ │ │ │ └── main/ │ │ │ │ └── scala/ │ │ │ │ ├── ALSAlgorithm.scala │ │ │ │ ├── ALSModel.scala │ │ │ │ ├── DataSource.scala │ │ │ │ ├── Engine.scala │ │ │ │ ├── Evaluation.scala │ │ │ │ ├── Preparator.scala │ │ │ │ └── Serving.scala │ │ │ └── template.json │ │ ├── globals.py │ │ ├── integration.py │ │ ├── scenarios/ │ │ │ ├── __init__.py │ │ │ ├── basic_app_usecases.py │ │ │ ├── eventserver_test.py │ │ │ └── quickstart_test.py │ │ ├── tests.py │ │ └── utils.py │ ├── run_docker.sh │ ├── script.travis.sh │ └── unit.sh └── tools/ ├── build.sbt └── src/ ├── main/ │ ├── scala/ │ │ └── org/ │ │ └── apache/ │ │ └── predictionio/ │ │ └── tools/ │ │ ├── Common.scala │ │ ├── RunBatchPredict.scala │ │ ├── RunServer.scala │ │ ├── RunWorkflow.scala │ │ ├── Runner.scala │ │ ├── admin/ │ │ │ ├── AdminAPI.scala │ │ │ ├── CommandClient.scala │ │ │ └── README.md │ │ ├── commands/ │ │ │ ├── AccessKey.scala │ │ │ ├── App.scala │ │ │ ├── Engine.scala │ │ │ ├── Export.scala │ │ │ ├── Import.scala │ │ │ ├── Management.scala │ │ │ └── Template.scala │ │ ├── console/ │ │ │ ├── Console.scala │ │ │ └── Pio.scala │ │ ├── dashboard/ │ │ │ ├── CorsSupport.scala │ │ │ └── Dashboard.scala │ │ ├── export/ │ │ │ └── EventsToFile.scala │ │ └── imprt/ │ │ └── FileToEvents.scala │ └── twirl/ │ └── org/ │ └── apache/ │ └── predictionio/ │ └── tools/ │ ├── console/ │ │ ├── accesskey.scala.txt │ │ ├── adminserver.scala.txt │ │ ├── app.scala.txt │ │ ├── batchpredict.scala.txt │ │ ├── build.scala.txt │ │ ├── dashboard.scala.txt │ │ ├── deploy.scala.txt │ │ ├── eval.scala.txt │ │ ├── eventserver.scala.txt │ │ ├── export.scala.txt │ │ ├── imprt.scala.txt │ │ ├── main.scala.txt │ │ ├── run.scala.txt │ │ ├── status.scala.txt │ │ ├── template.scala.txt │ │ ├── train.scala.txt │ │ ├── upgrade.scala.txt │ │ └── version.scala.txt │ ├── dashboard/ │ │ └── index.scala.html │ └── templates/ │ ├── itemrank/ │ │ └── params/ │ │ ├── algorithmsJson.scala.txt │ │ ├── datasourceJson.scala.txt │ │ ├── preparatorJson.scala.txt │ │ └── servingJson.scala.txt │ ├── itemrec/ │ │ └── params/ │ │ ├── algorithmsJson.scala.txt │ │ ├── datasourceJson.scala.txt │ │ ├── preparatorJson.scala.txt │ │ └── servingJson.scala.txt │ ├── itemsim/ │ │ └── params/ │ │ ├── algorithmsJson.scala.txt │ │ ├── datasourceJson.scala.txt │ │ ├── preparatorJson.scala.txt │ │ └── servingJson.scala.txt │ └── scala/ │ ├── buildSbt.scala.txt │ ├── engineJson.scala.txt │ ├── manifestJson.scala.txt │ ├── project/ │ │ └── assemblySbt.scala.txt │ └── src/ │ └── main/ │ └── scala/ │ └── engine.scala.txt └── test/ └── scala/ └── org/ └── apache/ └── predictionio/ └── tools/ ├── RunnerSpec.scala └── admin/ └── AdminAPISpec.scala