blob: c9e006f5d011380cff2943f2ad17e280fe7f15e6 [file] [log] [blame]
<!DOCTYPE html><html><head><title>Frequently Asked Questions</title><meta charset="utf-8"/><meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta class="swiftype" name="title" data-type="string" content="Frequently Asked Questions"/><link rel="canonical" href="https://docs.prediction.io/resources/faq/"/><link href="/images/favicon/normal-b330020a.png" rel="shortcut icon"/><link href="/images/favicon/apple-c0febcf2.png" rel="apple-touch-icon"/><link href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet"/><link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"/><link href="/stylesheets/application-3598c7d7.css" rel="stylesheet" type="text/css"/><!--[if lt IE 9]><script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script><![endif]--><script src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script><script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-38306178-1', 'auto');
ga('require', 'linkid', 'linkid.js');
ga('send', 'pageview');</script><script>!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","group","track","ready","alias","page","once","off","on"];analytics.factory=function(t){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}};for(var t=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t){var e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src=("https:"===document.location.protocol?"https://":"http://")+"cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(e,n)};analytics.SNIPPET_VERSION="3.0.1";
analytics.load("YlF3updaI3DR96hnNgSGpR3PPBUGDzt8");
analytics.page()
}}();</script><script>RCX_CUSTOM_LIB="https://cdn.recontext.com/staging/rcx.min.js";
(function(b,d,a){b.RCX_OBJECT=a;a=b[a]||[];if(!a.snipV&&!a.libV){b.rcx=a;a.snipV="0.2.0";var g=function(a,b,c,d){a[b]=a[b]||function(){c.push([d].concat(Array.prototype.slice.call(arguments)))}};b="init page track identify link setUserProperty unsetUserProperty".split(" ");for(var f=0;f<b.length;f++){var e,c;e=b[f];c=e.split(".");2==c.length?(a[c[0]]=a[c[0]]||[],g(a[c[0]],c[1],a,e)):g(a,e,a,e)}a=d.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof RCX_CUSTOM_LIB?
RCX_CUSTOM_LIB:"https://cdn.recontext.com/rcx.min.js";d=d.getElementsByTagName("script")[0];d.parentNode.insertBefore(a,d)}})(window,document,"rcx");
rcx.init("kTxFcI3IWdXYfRsh6uuYuej4qYl8m8LVMePM2hdIkM9YjHqkAFC6mqdqO9fpp8p9");
rcx.page();</script><script>function t(e){analytics.identify(e); analytics.track("newsletter signup");
rcx.track("newsletter signup", { '_email': e });}</script><script>!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','//connect.facebook.net/en_US/fbevents.js');
fbq('init', '1073028432707778');
fbq('track', "PageView");</script><script src="//use.typekit.net/mut4mjx.js"></script><script>try{Typekit.load();}catch(e){}</script></head><body><div id="global"><header><div class="container" id="header-wrapper"><div class="row"><div class="col-sm-12"><div id="logo-wrapper"><span id="drawer-toggle"></span><a href="#"></a><a href="http://prediction.io/"><img alt="PredictionIO" id="logo" src="/images/logos/logo-ee2b9bb3.png"/></a></div><div id="menu-wrapper"><div id="header-nav-options-wrapper"><ul><li><a href="/">Install & Doc</a></li> <li><a href="/support">Support</a></li> </ul></div><div id="pill-wrapper"><a class="pill left" href="//templates.prediction.io/">TEMPLATES</a> <a class="pill right" href="//github.com/PredictionIO/PredictionIO/">OPEN SOURCE</a></div></div><img class="mobile-search-bar-toggler hidden-md hidden-lg" src="/images/icons/search-glass-704bd4ff.png"/></div></div></div></header><div id="search-bar-row-wrapper"><div class="container-fluid" id="search-bar-row"><div class="row"><div class="col-md-9 col-sm-11 col-xs-11"><div class="hidden-md hidden-lg" id="mobile-page-heading-wrapper"><p>PredictionIO Docs</p><h4>FAQs</h4></div><h4 class="hidden-sm hidden-xs">PredictionIO Docs</h4></div><div class="col-md-3 col-sm-1 col-xs-1 hidden-md hidden-lg"><img id="left-menu-indicator" src="/images/icons/down-arrow-dfe9f7fe.png"/></div><div class="col-md-3 col-sm-12 col-xs-12 swiftype-wrapper"><div class="swiftype"><form class="search-form"><img class="search-box-toggler hidden-xs hidden-sm" src="/images/icons/search-glass-704bd4ff.png"/><div class="search-box"><img src="/images/icons/search-glass-704bd4ff.png"/><input type="text" id="st-search-input" class="st-search-input" placeholder="Search Doc..."/></div><img class="swiftype-row-hider hidden-md hidden-lg" src="/images/icons/drawer-toggle-active-fcbef12a.png"/></form></div></div><div class="mobile-left-menu-toggler hidden-md hidden-lg"></div></div></div></div><div id="page" class="container-fluid"><div class="row"><div id="left-menu-wrapper" class="col-md-3"><nav id="nav-main"><ul><li class="level-1"><a class="expandible" href="/"><span>Apache PredictionIO (incubating) Documentation</span></a><ul><li class="level-2"><a class="final" href="/"><span>Welcome to Apache PredictionIO (incubating)</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Getting Started</span></a><ul><li class="level-2"><a class="final" href="/start/"><span>A Quick Intro</span></a></li><li class="level-2"><a class="final" href="/install/"><span>Installing Apache PredictionIO (incubating)</span></a></li><li class="level-2"><a class="final" href="/start/download/"><span>Downloading an Engine Template</span></a></li><li class="level-2"><a class="final" href="/start/deploy/"><span>Deploying Your First Engine</span></a></li><li class="level-2"><a class="final" href="/start/customize/"><span>Customizing the Engine</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Integrating with Your App</span></a><ul><li class="level-2"><a class="final" href="/appintegration/"><span>App Integration Overview</span></a></li><li class="level-2"><a class="expandible" href="/sdk/"><span>List of SDKs</span></a><ul><li class="level-3"><a class="final" href="/sdk/java/"><span>Java & Android SDK</span></a></li><li class="level-3"><a class="final" href="/sdk/php/"><span>PHP SDK</span></a></li><li class="level-3"><a class="final" href="/sdk/python/"><span>Python SDK</span></a></li><li class="level-3"><a class="final" href="/sdk/ruby/"><span>Ruby SDK</span></a></li><li class="level-3"><a class="final" href="/sdk/community/"><span>Community Powered SDKs</span></a></li></ul></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Deploying an Engine</span></a><ul><li class="level-2"><a class="final" href="/deploy/"><span>Deploying as a Web Service</span></a></li><li class="level-2"><a class="final" href="/cli/#engine-commands"><span>Engine Command-line Interface</span></a></li><li class="level-2"><a class="final" href="/deploy/engineparams/"><span>Setting Engine Parameters</span></a></li><li class="level-2"><a class="final" href="/deploy/enginevariants/"><span>Deploying Multiple Engine Variants</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Customizing an Engine</span></a><ul><li class="level-2"><a class="final" href="/customize/"><span>Learning DASE</span></a></li><li class="level-2"><a class="final" href="/customize/dase/"><span>Implement DASE</span></a></li><li class="level-2"><a class="final" href="/customize/troubleshooting/"><span>Troubleshooting Engine Development</span></a></li><li class="level-2"><a class="final" href="/api/current/#package"><span>Engine Scala APIs</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Collecting and Analyzing Data</span></a><ul><li class="level-2"><a class="final" href="/datacollection/"><span>Event Server Overview</span></a></li><li class="level-2"><a class="final" href="/cli/#event-server-commands"><span>Event Server Command-line Interface</span></a></li><li class="level-2"><a class="final" href="/datacollection/eventapi/"><span>Collecting Data with REST/SDKs</span></a></li><li class="level-2"><a class="final" href="/datacollection/eventmodel/"><span>Events Modeling</span></a></li><li class="level-2"><a class="final" href="/datacollection/webhooks/"><span>Unifying Multichannel Data with Webhooks</span></a></li><li class="level-2"><a class="final" href="/datacollection/channel/"><span>Channel</span></a></li><li class="level-2"><a class="final" href="/datacollection/batchimport/"><span>Importing Data in Batch</span></a></li><li class="level-2"><a class="final" href="/datacollection/analytics/"><span>Using Analytics Tools</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Choosing an Algorithm(s)</span></a><ul><li class="level-2"><a class="final" href="/algorithm/"><span>Built-in Algorithm Libraries</span></a></li><li class="level-2"><a class="final" href="/algorithm/switch/"><span>Switching to Another Algorithm</span></a></li><li class="level-2"><a class="final" href="/algorithm/multiple/"><span>Combining Multiple Algorithms</span></a></li><li class="level-2"><a class="final" href="/algorithm/custom/"><span>Adding Your Own Algorithms</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>ML Tuning and Evaluation</span></a><ul><li class="level-2"><a class="final" href="/evaluation/"><span>Overview</span></a></li><li class="level-2"><a class="final" href="/evaluation/paramtuning/"><span>Hyperparameter Tuning</span></a></li><li class="level-2"><a class="final" href="/evaluation/evaluationdashboard/"><span>Evaluation Dashboard</span></a></li><li class="level-2"><a class="final" href="/evaluation/metricchoose/"><span>Choosing Evaluation Metrics</span></a></li><li class="level-2"><a class="final" href="/evaluation/metricbuild/"><span>Building Evaluation Metrics</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>System Architecture</span></a><ul><li class="level-2"><a class="final" href="/system/"><span>Architecture Overview</span></a></li><li class="level-2"><a class="final" href="/system/anotherdatastore/"><span>Using Another Data Store</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Engine Template Gallery</span></a><ul><li class="level-2"><a class="final" href="http://templates.prediction.io"><span>Browse</span></a></li><li class="level-2"><a class="final" href="/community/submit-template/"><span>Submit your Engine as a Template</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Demo Tutorials</span></a><ul><li class="level-2"><a class="final" href="/demo/tapster/"><span>Comics Recommendation Demo</span></a></li><li class="level-2"><a class="final" href="/demo/community/"><span>Community Contributed Demo</span></a></li><li class="level-2"><a class="final" href="/demo/textclassification/"><span>Text Classification Engine Tutorial</span></a></li></ul></li><li class="level-1"><a class="expandible" href="/community/"><span>Getting Involved</span></a><ul><li class="level-2"><a class="final" href="/community/contribute-code/"><span>Contribute Code</span></a></li><li class="level-2"><a class="final" href="/community/contribute-documentation/"><span>Contribute Documentation</span></a></li><li class="level-2"><a class="final" href="/community/contribute-sdk/"><span>Contribute a SDK</span></a></li><li class="level-2"><a class="final" href="/community/contribute-webhook/"><span>Contribute a Webhook</span></a></li><li class="level-2"><a class="final" href="/community/projects/"><span>Community Projects</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Getting Help</span></a><ul><li class="level-2"><a class="final active" href="/resources/faq/"><span>FAQs</span></a></li><li class="level-2"><a class="final" href="/support/"><span>Community Support</span></a></li><li class="level-2"><a class="final" href="/support/#enterprise-support"><span>Enterprise Support</span></a></li></ul></li><li class="level-1"><a class="expandible" href="#"><span>Resources</span></a><ul><li class="level-2"><a class="final" href="/resources/intellij/"><span>Developing Engines with IntelliJ IDEA</span></a></li><li class="level-2"><a class="final" href="/resources/upgrade/"><span>Upgrade Instructions</span></a></li><li class="level-2"><a class="final" href="/resources/glossary/"><span>Glossary</span></a></li></ul></li></ul></nav></div><div class="col-md-9 col-sm-12"><div class="content-header hidden-md hidden-lg"><div id="breadcrumbs" class="hidden-sm hidden xs"><ul><li><a href="#">Getting Help</a><span class="spacer">&gt;</span></li><li><span class="last">FAQs</span></li></ul></div><div id="page-title"><h1>Frequently Asked Questions</h1></div></div><div id="table-of-content-wrapper"><h5>On this page</h5><aside id="table-of-contents"><ul> <li> <a href="#using-predictionio">Using PredictionIO</a> </li> <li> <a href="#problem-with-event-server">Problem with Event Server</a> </li> <li> <a href="#engine-training">Engine Training</a> </li> <li> <a href="#deploy-engine">Deploy Engine</a> </li> <li> <a href="#building-predictionio">Building PredictionIO</a> </li> <li> <a href="#engine-development">Engine Development</a> </li> <li> <a href="#running-hbase">Running HBase</a> </li> </ul> </aside><hr/><a id="edit-page-link" href="https://github.com/apache/incubator-predictionio/tree/livedoc/docs/manual/source/resources/faq.html.md"><img src="/images/icons/edit-pencil-d6c1bb3d.png"/>Edit this page</a></div><div class="content-header hidden-sm hidden-xs"><div id="breadcrumbs" class="hidden-sm hidden xs"><ul><li><a href="#">Getting Help</a><span class="spacer">&gt;</span></li><li><span class="last">FAQs</span></li></ul></div><div id="page-title"><h1>Frequently Asked Questions</h1></div></div><div class="content"><h2 id='using-predictionio' class='header-anchors'>Using PredictionIO</h2><h3 id='q:-how-do-i-check-to-see-if-various-dependencies,-such-as-elasticsearch-and-hbase,-are-running?' class='header-anchors'>Q: How do I check to see if various dependencies, such as ElasticSearch and HBase, are running?</h3><p>You can run <code>$ pio status</code> from the terminal and it will return the status of various components that PredictionIO depends on.</p> <ul> <li> You should see the following message if everything is OK:</li> </ul> <div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19</pre></td><td class="code"><pre><span class="gp">$ </span>pio status
PredictionIO
Installed at: /home/vagrant/PredictionIO
Version: 0.8.6
Apache Spark
Installed at: /home/vagrant/PredictionIO/vendors/spark-1.2.0
Version: 1.2.0 <span class="o">(</span>meets minimum requirement of 1.2.0<span class="o">)</span>
Storage Backend Connections
Verifying Meta Data Backend
Verifying Model Data Backend
Verifying Event Data Backend
Test write Event Store <span class="o">(</span>App Id 0<span class="o">)</span>
2015-02-03 18:52:38,904 INFO hbase.HBLEvents - The table predictionio_eventdata:events_0 doesn<span class="s1">'t exist yet. Creating now...
2015-02-03 18:52:39,868 INFO hbase.HBLEvents - Removing table predictionio_eventdata:events_0...
(sleeping 5 seconds for all messages to show up...)
Your system is all ready to go.
</span></pre></td></tr></tbody></table> </div> <ul> <li>If you see the following error message, it usually means ElasticSearch is not running properly:</li> </ul> <div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
5
6
7
8
9</pre></td><td class="code"><pre> ...
Storage Backend Connections
Verifying Meta Data Backend
...
Caused by: org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: <span class="o">[]</span>
at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable<span class="o">(</span>TransportClientNodesService.java:298<span class="o">)</span>
...
Unable to connect to all storage backend<span class="o">(</span>s<span class="o">)</span> successfully. Please refer to error message<span class="o">(</span>s<span class="o">)</span> above. Aborting.
</pre></td></tr></tbody></table> </div> <p>You can check if there is any ElasticSearch process by running &#39;jps&#39;.</p><p>Please see <strong>How to start elasticsearch</strong> below.</p> <ul> <li>If you see the following error message, it usually means HBase is not running properly:</li> </ul> <div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15</pre></td><td class="code"><pre>Storage Backend Connections
Verifying Meta Data Backend
Verifying Model Data Backend
Verifying Event Data Backend
2015-02-03 18:40:04,810 ERROR zookeeper.RecoverableZooKeeper - ZooKeeper exists failed after 1 attempts
2015-02-03 18:40:04,812 ERROR zookeeper.ZooKeeperWatcher - hconnection-0x1e4075ce, <span class="nv">quorum</span><span class="o">=</span>localhost:2181, <span class="nv">baseZNode</span><span class="o">=</span>/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException<span class="nv">$ConnectionLossException</span>: KeeperErrorCode <span class="o">=</span> ConnectionLoss <span class="k">for</span> /hbase/hbaseid
...
2015-02-03 18:40:07,021 ERROR hbase.StorageClient - Failed to connect to HBase. Plase check <span class="k">if </span>HBase is running properly.
2015-02-03 18:40:07,026 ERROR storage.Storage<span class="nv">$ </span>- Error initializing storage client <span class="k">for </span><span class="nb">source </span>HBASE
2015-02-03 18:40:07,027 ERROR storage.Storage<span class="nv">$ </span>- Can<span class="s1">'t connect to ZooKeeper
java.util.NoSuchElementException: None.get
...
Unable to connect to all storage backend(s) successfully. Please refer to error message(s) above. Aborting.
</span></pre></td></tr></tbody></table> </div> <p>You can check if there is any HBase-related process by running &#39;jps&#39;.</p><p>Please see <strong>How to start HBase</strong> below.</p><h3 id='q:-how-to-start-elasticsearch?' class='header-anchors'>Q: How to start ElasticSearch?</h3><p>If you used the <a href="/install/install-linux/#quick-install">install script</a> to install PredictionIO, the ElasticSearch is installed at <code>~/PredictionIO/vendors/elasticsearch-x.y.z/</code> where x.y.z is the version number (currently it&#39;s 1.4.4). To start it, run:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>~/PredictionIO/vendors/elasticsearch-x.y.z/bin/elasticsearch
</pre></td></tr></tbody></table> </div> <p>If you didn&#39;t use install script, please go to where ElasticSearch is installed to start it.</p><div class="alert-message info"><p>It may take some time (15 seconds or so) for ElasticSearch to become ready after you start it (wait a bit before you run <code>pio status</code> again).</p></div><h3 id='q:-how-to-start-hbase-?' class='header-anchors'>Q: How to start HBase ?</h3><p>If you used the <a href="/install/install-linux/#quick-install">install script</a> to install PredictionIO, the HBase is installed at <code>~/PredictionIO/vendors/hbase-x.y.z/</code> where x.y.z is the version number (currently it&#39;s 0.98.6). To start it, run:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>~/PredictionIO/vendors/hbase-x.y.z/bin/start-hbase.sh
</pre></td></tr></tbody></table> </div> <p>If you didn&#39;t use install script, please go to where HBase is installed to start it.</p><div class="alert-message info"><p>It may take some time (15 seconds or so) for HBase to become ready after you start it (wait a bit before you run <code>pio status</code> again).</p></div><h2 id='problem-with-event-server' class='header-anchors'>Problem with Event Server</h2><h3 id='q:-how-do-i-increase-the-jvm-heap-size-of-the-event-server?' class='header-anchors'>Q: How do I increase the JVM heap size of the Event Server?</h3><p>Add the <code>JAVA_OPTS</code> environmental variable to supply JVM options, e.g.</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span><span class="nv">JAVA_OPTS</span><span class="o">=</span>-Xmx16g bin/pio eventserver ...
</pre></td></tr></tbody></table> </div> <h2 id='engine-training' class='header-anchors'>Engine Training</h2><h3 id='q:-how-to-increase-spark-driver-program-and-worker-executor-memory-size?' class='header-anchors'>Q: How to increase Spark driver program and worker executor memory size?</h3><p>In general, the PredictionIO <code>bin/pio</code> scripts wraps around Spark&#39;s <code>spark-submit</code> script. You can specify a lot of Spark configurations (i.e. executor memory, cores, master url, etc.) with it. You can supply these as pass-through arguments at the end of <code>bin/pio</code> command.</p><p>If the engine training seems stuck, it&#39;s possible that the the executor doesn&#39;t have enough memory.</p><p>First, follow <a href="http://spark.apache.org/docs/latest/spark-standalone.html">instruction here</a> to start standalone Spark cluster and get the master URL. If you use the provided quick install script to install PredictionIO, the Spark is installed at <code>PredictionIO/vendors/spark-1.2.0/</code> where you could run the Spark commands in <code>sbin/</code> as described in the Spark documentation. Then use following train commmand to specify executor memory (default is only 512 MB) and driver memory.</p><p>For example, the follow command set the Spark master to <code>spark://localhost:7077</code> (the default url of standalone cluster), set the driver memory to 16G and set the executor memory to 24G for <code>pio train</code>.</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio train -- --master spark://localhost:7077 --driver-memory 16G --executor-memory 24G
</pre></td></tr></tbody></table> </div> <h3 id='q:-how-to-resolve-&quot;exception-in-thread-&quot;main&quot;-org.apache.spark.sparkexception:-job-aborted-due-to-stage-failure:-serialized-task-165:35-was-110539813-bytes,-which-exceeds-max-allowed:-spark.akka.framesize-(10485760-bytes)---reserved-(204800-bytes).-consider-increasing-spark.akka.framesize-or-using-broadcast-variables-for-large-values.&quot;?' class='header-anchors'>Q: How to resolve &quot;Exception in thread &quot;main&quot; org.apache.spark.SparkException: Job aborted due to stage failure: Serialized task 165:35 was 110539813 bytes, which exceeds max allowed: spark.akka.frameSize (10485760 bytes) - reserved (204800 bytes). Consider increasing spark.akka.frameSize or using broadcast variables for large values.&quot;?</h3><p>A likely reason is the local algorithm model is larger than the default frame size. You can specify a larger value as a pass-thru argument to spark-submit when you <code>pio train</code>. The following command increase the frameSize to 1024MB.</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio train -- --conf spark.akka.frameSize<span class="o">=</span>1024
</pre></td></tr></tbody></table> </div> <h2 id='deploy-engine' class='header-anchors'>Deploy Engine</h2><h3 id='q:-how-to-increase-heap-space-memory-for-&quot;pio-deploy&quot;?' class='header-anchors'>Q: How to increase heap space memory for &quot;pio deploy&quot;?</h3><p>If you see the following error during <code>pio deploy</code>, it means there is not enough heap space memory.</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4</pre></td><td class="code"><pre>...
<span class="o">[</span>ERROR] <span class="o">[</span>LocalFSModels] Java heap space
<span class="o">[</span>ERROR] <span class="o">[</span>OneForOneStrategy] None.get
...
</pre></td></tr></tbody></table> </div> <p>To increase the heap space, specify the &quot;-- --driver-memory &quot; parameter in the command. For example, set the driver memory to 8G when deploy the engine:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>pio deploy -- --driver-memory 8G
</pre></td></tr></tbody></table> </div> <h2 id='building-predictionio' class='header-anchors'>Building PredictionIO</h2><h3 id='q:-how-to-resolve-&quot;error:-could-not-find-or-load-main-class-io.prediction.tools.console&quot;-after-./make_distribution.sh?' class='header-anchors'>Q: How to resolve &quot;Error: Could not find or load main class io.prediction.tools.Console&quot; after ./make_distribution.sh?</h3><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
2</pre></td><td class="code"><pre><span class="gp">$ </span>bin/pio app
Error: Could not find or load main class io.prediction.tools.Console
</pre></td></tr></tbody></table> </div> <p>When PredictionIO bumps a version, it creates another JAR file with the new version number.</p><p>Delete everything but the latest <code>pio-assembly-&lt;VERSION&gt;.jar</code> in <code>$PIO_HOME/assembly</code> directory. For example:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1
2
3
4
5
6
7
8
9</pre></td><td class="code"><pre><span class="gp">PredictionIO$ </span><span class="nb">cd </span>assembly/
<span class="gp">PredictionIO/assembly$ </span>ls -al
total 197776
drwxr-xr-x 2 yipjustin yipjustin 4096 Nov 12 00:08 .
drwxr-xr-x 17 yipjustin yipjustin 4096 Nov 12 00:09 ..
-rw-r--r-- 1 yipjustin yipjustin 101184982 Nov 5 06:05 pio-assembly-0.8.1-SNAPSHOT.jar
-rw-r--r-- 1 yipjustin yipjustin 101324859 Nov 12 00:09 pio-assembly-0.8.2.jar
<span class="gp">PredictionIO/assembly$ </span>rm pio-assembly-0.8.1-SNAPSHOT.jar
</pre></td></tr></tbody></table> </div> <h3 id='q:-how-to-resolve-&quot;.......<a-href="data/compile:compile">error</a>-java.lang.assertionerror:-assertion-failed:-java.lang.autocloseable&quot;-when-./make_distribution.sh?' class='header-anchors' >Q: How to resolve &quot;.......<a href="data/compile:compile">error</a> java.lang.AssertionError: assertion failed: java.lang.AutoCloseable&quot; when ./make_distribution.sh?</h3><p>PredictionIO only support Java 7 or later. Please make sure you have the correct Java version with the command:</p><div class="highlight shell"><table style="border-spacing: 0"><tbody><tr><td class="gutter gl" style="text-align: right"><pre class="lineno">1</pre></td><td class="code"><pre><span class="gp">$ </span>javac -version
</pre></td></tr></tbody></table> </div> <h2 id='engine-development' class='header-anchors'>Engine Development</h2><h3 id='q:-what&#39;s-the-difference-between-p--and-l--prefixed-classes-and-functions?' class='header-anchors'>Q: What&#39;s the difference between P- and L- prefixed classes and functions?</h3><p>PredictionIO v0.8 is built on the top of Spark, a massively scalable programming framework. A spark algorithm is different from conventional single machine algorithm in a way that spark algorithms use the <a href="http://spark.apache.org/docs/1.0.1/programming-guide.html#resilient-distributed-datasets-rdds">RDD</a> abstraction as its primary data type.</p><p>PredictionIO framework natively support both RDD-based algorithms and traditional single-machine algorithms. For controllers prefixed by &quot;P&quot; (i.e. PJavaDataSource, PJavaAlgorithm), their data include RDD abstraction; For &quot;L&quot; controllers, they are traditional single machine algorithms.</p><h2 id='running-hbase' class='header-anchors'>Running HBase</h2><h3 id='q:-how-to-resolve-&#39;exception-in-thread-&quot;main&quot;-java.lang.nullpointerexception-at-org.apache.hadoop.net.dns.reversedns(dns.java:92)&#39;?' class='header-anchors'>Q: How to resolve &#39;Exception in thread &quot;main&quot; java.lang.NullPointerException at org.apache.hadoop.net.DNS.reverseDns(DNS.java:92)&#39;?</h3><p>HBase relies on reverse DNS be set up properly to function. If your network configuration changes (such as working on a laptop with public WiFi hotspots), there could be a chance that reverse DNS does not function properly. You can install a DNS server on your own computer. Some users have reported that using <a href="https://developers.google.com/speed/public-dns/">Google Public DNS</a> would also solve the problem.</p><p>If you have other questions, you can search or post on the <a href="https://groups.google.com/forum/#!forum/predictionio-user">user group</a> or <a href="mailto:support@prediction.io">email the core team</a> directly.</p></div></div></div></div><footer><div class="container"><div class="seperator"></div><div class="row"><div class="col-md-4 col-md-push-8 col-xs-12"><div class="subscription-form-wrapper"><h4>Subscribe to our Newsletter</h4><form class="ajax-form" id="subscribe-form" method="POST" action="https://script.google.com/macros/s/AKfycbwhzeKCQJjQ52eVAqNT_vcklH07OITUO7wzOMDXvK6EGAWgaZgF/exec"><input class="required underlined-input" type="email" placeholder="Your email address" name="subscription_email" id="subscription_email"/><input class="pill-button" value="SUBSCRIBE" type="submit" data-state-normal="SUBSCRIBE" data-state-sucess="SUBSCRIBED!" data-state-loading="SENDING..." onclick="t($('#subscription_email').val());"/><p class="result"></p></form></div></div><div class="col-md-2 col-md-pull-4 col-xs-6 footer-link-column"><div class="footer-link-column-row"><h4>Community</h4><ul><li><a href="//docs.prediction.io/install/" target="blank">Download</a></li><li><a href="//docs.prediction.io/" target="blank">Docs</a></li><li><a href="//github.com/PredictionIO/PredictionIO" target="blank">GitHub</a></li><li><a href="//groups.google.com/forum/#!forum/predictionio-user" target="blank">Support Forum</a></li><li><a href="//stackoverflow.com/questions/tagged/predictionio" target="blank">Stackoverflow</a></li><li><a href="mailto:&#x73;&#x75;&#x70;&#x70;&#x6F;&#x72;&#x74;&#x40;&#x70;&#x72;&#x65;&#x64;&#x69;&#x63;&#x74;&#x69;&#x6F;&#x6E;&#x2E;&#x69;&#x6F;" target="blank">Contact Us</a></li></ul></div></div><div class="col-md-2 col-md-pull-4 col-xs-6 footer-link-column"><div class="footer-link-column-row"><h4>Contribute</h4><ul><li><a href="//docs.prediction.io/community/contribute-code/" target="blank">Contribute</a></li><li><a href="//github.com/PredictionIO/PredictionIO" target="blank">Source Code</a></li><li><a href="//predictionio.atlassian.net/secure/Dashboard.jspa" target="blank">Bug Tracker</a></li><li><a href="//groups.google.com/forum/#!forum/predictionio-dev" target="blank">Contributors&#146; Forum</a></li><li><a href="//prediction.io/cla">Contributor Agreement</a></li><li><a href="//predictionio.uservoice.com/forums/219398-general/filters/top">Request Features</a></li></ul></div></div><div class="col-md-2 col-md-pull-4 col-xs-6 footer-link-column"><div class="footer-link-column-row"><h4>Enterprise</h4><ul><li><a href="//docs.prediction.io/support/" target="blank">Support</a></li><li><a href="//prediction.io/enterprise">Enterprise</a></li><li><a href="//prediction.io/products/predictionio-enterprise">Services</a></li></ul></div><div class="footer-link-column-row"><h4>Connect</h4><ul><li><a href="//blog.prediction.io/" target="blank">Blog</a></li><li><a href="//predictionio.theresumator.com/" target="blank">Careers</a></li></ul></div></div><div class="col-md-2 col-md-pull-4 col-xs-6 footer-link-column"><div class="footer-link-column-row"><h4>Partnership</h4><ul><li><a href="//prediction.io/partners/program">Partner Program</a></li></ul></div></div></div></div><div id="footer-bottom"><div class="container"><div class="row"><div class="col-md-12"><div id="footer-logo-wrapper"><img alt="PredictionIO" src="/images/logos/logo-white-d1e9c6e6.png"/></div><div id="social-icons-wrapper"><a class="github-button" href="https://github.com/PredictionIO/PredictionIO" data-style="mega" data-count-href="/PredictionIO/PredictionIO/stargazers" data-count-api="/repos/PredictionIO/PredictionIO#stargazers_count" data-count-aria-label="# stargazers on GitHub" aria-label="Star PredictionIO/PredictionIO on GitHub">Star</a> <a class="github-button" href="https://github.com/PredictionIO/PredictionIO/fork" data-icon="octicon-git-branch" data-style="mega" data-count-href="/PredictionIO/PredictionIO/network" data-count-api="/repos/PredictionIO/PredictionIO#forks_count" data-count-aria-label="# forks on GitHub" aria-label="Fork PredictionIO/PredictionIO on GitHub">Fork</a> <script id="github-bjs" async="" defer="" src="https://buttons.github.io/buttons.js"></script><a href="//www.facebook.com/predictionio" target="blank"><img alt="PredictionIO on Twitter" src="/images/icons/twitter-ea9dc152.png"/></a> <a href="//twitter.com/predictionio" target="blank"><img alt="PredictionIO on Facebook" src="/images/icons/facebook-5c57939c.png"/></a> </div></div></div></div></div></footer></div><script>(function(w,d,t,u,n,s,e){w['SwiftypeObject']=n;w[n]=w[n]||function(){
(w[n].q=w[n].q||[]).push(arguments);};s=d.createElement(t);
e=d.getElementsByTagName(t)[0];s.async=1;s.src=u;e.parentNode.insertBefore(s,e);
})(window,document,'script','//s.swiftypecdn.com/install/v1/st.js','_st');
_st('install','HaUfpXXV87xoB_zzCQ45');</script><script>var _qevents = _qevents || [];
(function() {
var elem = document.createElement('script');
elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js";
elem.async = true;
elem.type = "text/javascript";
var scpt = document.getElementsByTagName('script')[0];
scpt.parentNode.insertBefore(elem, scpt);
})();
_qevents.push({
qacct:"p-stVMxuw8H5EPX"
});</script><noscript><div style="display:none;"><img src="//pixel.quantserve.com/pixel/p-stVMxuw8H5EPX.gif" border="0" height="1" width="1" alt="Quantcast"/></div></noscript><script>adroll_adv_id = "CPSSMJFFZ5DDHITC2STA54";
adroll_pix_id = "UWX4N2WIMJADVHJGOFTM44";
(function () {
var _onload = function(){
if (document.readyState && !/loaded|complete/.test(document.readyState)){setTimeout(_onload, 10);return}
if (!window.__adroll_loaded){__adroll_loaded=true;setTimeout(_onload, 50);return}
var scr = document.createElement("script");
var host = (("https:" == document.location.protocol) ? "https://s.adroll.com" : "http://a.adroll.com");
scr.setAttribute('async', 'true');
scr.type = "text/javascript";
scr.src = host + "/j/roundtrip.js";
((document.getElementsByTagName('head') || [null])[0] ||
document.getElementsByTagName('script')[0].parentNode).appendChild(scr);
};
if (window.addEventListener) {window.addEventListener('load', _onload, false);}
else {window.attachEvent('onload', _onload)}
}());</script><script src="/javascripts/application-5a24945b.js"></script></body></html>