Prepare 0.14.0-rc1
diff --git a/build.sbt b/build.sbt
index 7f2bc09..9da1e89 100644
--- a/build.sbt
+++ b/build.sbt
@@ -18,7 +18,7 @@
 
 name := "apache-predictionio-parent"
 
-version in ThisBuild := "0.14.0-SNAPSHOT"
+version in ThisBuild := "0.14.0"
 
 organization in ThisBuild := "org.apache.predictionio"
 
diff --git a/docs/manual/data/versions.yml b/docs/manual/data/versions.yml
index 46b03e0..54fa469 100644
--- a/docs/manual/data/versions.yml
+++ b/docs/manual/data/versions.yml
@@ -1,6 +1,6 @@
-pio: 0.13.0
-spark: 2.1.1
-spark_download_filename: spark-2.1.1-bin-hadoop2.6
+pio: 0.14.0
+spark: 2.4.0
+spark_download_filename: spark-2.4.0-bin-hadoop2.7
 elasticsearch_download_filename: elasticsearch-5.6.9
 hbase_version: 1.2.6
 hbase_basename: hbase-1.2.6
diff --git a/docs/manual/source/datacollection/plugin.html.md b/docs/manual/source/datacollection/plugin.html.md
index f99cb4f..8b1c3e5 100644
--- a/docs/manual/source/datacollection/plugin.html.md
+++ b/docs/manual/source/datacollection/plugin.html.md
@@ -31,8 +31,8 @@
 ```scala
 name := "pio-plugin-example"
 version := "1.0"
-scalaVersion := "2.11.11"
-libraryDependencies += "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0"
+scalaVersion := "2.11.12"
+libraryDependencies += "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0"
 ```
 
 Event server plug-ins must extend `EventServerPlugin`. Here is an example of event server plug-in:
diff --git a/docs/manual/source/deploy/plugin.html.md b/docs/manual/source/deploy/plugin.html.md
index c9a120c..e4794d1 100644
--- a/docs/manual/source/deploy/plugin.html.md
+++ b/docs/manual/source/deploy/plugin.html.md
@@ -31,8 +31,8 @@
 ```scala
 name := "pio-plugin-example"
 version := "1.0"
-scalaVersion := "2.11.11"
-libraryDependencies += "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0"
+scalaVersion := "2.11.12"
+libraryDependencies += "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0"
 ```
 
 Engine server plug-ins must extend `EngineServerPlugin`. Here is an example of engine server plug-in:
diff --git a/docs/manual/source/partials/shared/install/_spark.html.erb b/docs/manual/source/partials/shared/install/_spark.html.erb
index 43ad9ee..e6df7f3 100644
--- a/docs/manual/source/partials/shared/install/_spark.html.erb
+++ b/docs/manual/source/partials/shared/install/_spark.html.erb
@@ -19,7 +19,7 @@
 PredictionIO. Download and extract it.
 
 ```
-$ wget http://d3kbcqa49mib13.cloudfront.net/<%= data.versions.spark_download_filename %>.tgz
+$ wget https://archive.apache.org/dist/spark/spark-<%= data.versions.spark %>/<%= data.versions.spark_download_filename %>.tgz
 $ tar zxvfC <%= data.versions.spark_download_filename %>.tgz PredictionIO-<%= data.versions.pio %>/vendors
 ```
 
diff --git a/examples/scala-parallel-classification/README.md b/examples/scala-parallel-classification/README.md
index 82fcda0..96735ba 100644
--- a/examples/scala-parallel-classification/README.md
+++ b/examples/scala-parallel-classification/README.md
@@ -15,6 +15,6 @@
 limitations under the License.
 -->
 
-This is based on Classification Engine Template v0.13.0.
+This is based on Classification Engine Template v0.14.0.
 
 Please refer to http://predictionio.apache.org/templates/classification/how-to/
diff --git a/examples/scala-parallel-classification/add-algorithm/build.sbt b/examples/scala-parallel-classification/add-algorithm/build.sbt
index e929f9e..47604e3 100644
--- a/examples/scala-parallel-classification/add-algorithm/build.sbt
+++ b/examples/scala-parallel-classification/add-algorithm/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-classification"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
diff --git a/examples/scala-parallel-classification/reading-custom-properties/build.sbt b/examples/scala-parallel-classification/reading-custom-properties/build.sbt
index e929f9e..47604e3 100644
--- a/examples/scala-parallel-classification/reading-custom-properties/build.sbt
+++ b/examples/scala-parallel-classification/reading-custom-properties/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-classification"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
diff --git a/examples/scala-parallel-ecommercerecommendation/README.md b/examples/scala-parallel-ecommercerecommendation/README.md
index 0063fde..b80c928 100644
--- a/examples/scala-parallel-ecommercerecommendation/README.md
+++ b/examples/scala-parallel-ecommercerecommendation/README.md
@@ -15,6 +15,6 @@
 limitations under the License.
 -->
 
-This is based on E-Commerce Recommendation Template v0.13.0.
+This is based on E-Commerce Recommendation Template v0.14.0.
 
 Please refer to http://predictionio.apache.org/templates/ecommercerecommendation/how-to/
diff --git a/examples/scala-parallel-ecommercerecommendation/adjust-score/build.sbt b/examples/scala-parallel-ecommercerecommendation/adjust-score/build.sbt
index 7899d60..e5b0b85 100644
--- a/examples/scala-parallel-ecommercerecommendation/adjust-score/build.sbt
+++ b/examples/scala-parallel-ecommercerecommendation/adjust-score/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-ecommercerecommendation"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
diff --git a/examples/scala-parallel-ecommercerecommendation/train-with-rate-event/build.sbt b/examples/scala-parallel-ecommercerecommendation/train-with-rate-event/build.sbt
index 7899d60..e5b0b85 100644
--- a/examples/scala-parallel-ecommercerecommendation/train-with-rate-event/build.sbt
+++ b/examples/scala-parallel-ecommercerecommendation/train-with-rate-event/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-ecommercerecommendation"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
diff --git a/examples/scala-parallel-recommendation/README.md b/examples/scala-parallel-recommendation/README.md
index 379a750..bd99531 100644
--- a/examples/scala-parallel-recommendation/README.md
+++ b/examples/scala-parallel-recommendation/README.md
@@ -15,6 +15,6 @@
 limitations under the License.
 -->
 
-This is based on Recommendation Template v0.13.0.
+This is based on Recommendation Template v0.14.0.
 
 Please refer to http://predictionio.apache.org/templates/recommendation/how-to/
diff --git a/examples/scala-parallel-recommendation/blacklist-items/build.sbt b/examples/scala-parallel-recommendation/blacklist-items/build.sbt
index bc124a1..d1d9b1b 100644
--- a/examples/scala-parallel-recommendation/blacklist-items/build.sbt
+++ b/examples/scala-parallel-recommendation/blacklist-items/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-recommendation"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
\ No newline at end of file
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
\ No newline at end of file
diff --git a/examples/scala-parallel-recommendation/customize-data-prep/build.sbt b/examples/scala-parallel-recommendation/customize-data-prep/build.sbt
index bc124a1..d1d9b1b 100644
--- a/examples/scala-parallel-recommendation/customize-data-prep/build.sbt
+++ b/examples/scala-parallel-recommendation/customize-data-prep/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-recommendation"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
\ No newline at end of file
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
\ No newline at end of file
diff --git a/examples/scala-parallel-recommendation/customize-serving/build.sbt b/examples/scala-parallel-recommendation/customize-serving/build.sbt
index bc124a1..d1d9b1b 100644
--- a/examples/scala-parallel-recommendation/customize-serving/build.sbt
+++ b/examples/scala-parallel-recommendation/customize-serving/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-recommendation"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
\ No newline at end of file
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
\ No newline at end of file
diff --git a/examples/scala-parallel-recommendation/reading-custom-events/build.sbt b/examples/scala-parallel-recommendation/reading-custom-events/build.sbt
index bc124a1..d1d9b1b 100644
--- a/examples/scala-parallel-recommendation/reading-custom-events/build.sbt
+++ b/examples/scala-parallel-recommendation/reading-custom-events/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-recommendation"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
\ No newline at end of file
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
\ No newline at end of file
diff --git a/examples/scala-parallel-recommendation/train-with-view-event/build.sbt b/examples/scala-parallel-recommendation/train-with-view-event/build.sbt
index bc124a1..d1d9b1b 100644
--- a/examples/scala-parallel-recommendation/train-with-view-event/build.sbt
+++ b/examples/scala-parallel-recommendation/train-with-view-event/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-recommendation"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
\ No newline at end of file
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
\ No newline at end of file
diff --git a/examples/scala-parallel-similarproduct/README.md b/examples/scala-parallel-similarproduct/README.md
index 9daae15..a1da18b 100644
--- a/examples/scala-parallel-similarproduct/README.md
+++ b/examples/scala-parallel-similarproduct/README.md
@@ -15,6 +15,6 @@
 limitations under the License.
 -->
 
-This is based on Similar Product Template v0.13.0.
+This is based on Similar Product Template v0.14.0.
 
 Please refer to http://predictionio.apache.org/templates/similarproduct/how-to/
diff --git a/examples/scala-parallel-similarproduct/multi-events-multi-algos/build.sbt b/examples/scala-parallel-similarproduct/multi-events-multi-algos/build.sbt
index e72b6f2..9d9814e 100644
--- a/examples/scala-parallel-similarproduct/multi-events-multi-algos/build.sbt
+++ b/examples/scala-parallel-similarproduct/multi-events-multi-algos/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-similarproduct"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
diff --git a/examples/scala-parallel-similarproduct/recommended-user/build.sbt b/examples/scala-parallel-similarproduct/recommended-user/build.sbt
index f5b86f5..71f09c0 100644
--- a/examples/scala-parallel-similarproduct/recommended-user/build.sbt
+++ b/examples/scala-parallel-similarproduct/recommended-user/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-recommendeduser"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
diff --git a/examples/scala-parallel-similarproduct/return-item-properties/build.sbt b/examples/scala-parallel-similarproduct/return-item-properties/build.sbt
index e72b6f2..9d9814e 100644
--- a/examples/scala-parallel-similarproduct/return-item-properties/build.sbt
+++ b/examples/scala-parallel-similarproduct/return-item-properties/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-similarproduct"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
diff --git a/examples/scala-parallel-similarproduct/rid-user-set-event/build.sbt b/examples/scala-parallel-similarproduct/rid-user-set-event/build.sbt
index e72b6f2..9d9814e 100644
--- a/examples/scala-parallel-similarproduct/rid-user-set-event/build.sbt
+++ b/examples/scala-parallel-similarproduct/rid-user-set-event/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-similarproduct"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
diff --git a/examples/scala-parallel-similarproduct/train-with-rate-event/build.sbt b/examples/scala-parallel-similarproduct/train-with-rate-event/build.sbt
index e72b6f2..9d9814e 100644
--- a/examples/scala-parallel-similarproduct/train-with-rate-event/build.sbt
+++ b/examples/scala-parallel-similarproduct/train-with-rate-event/build.sbt
@@ -18,7 +18,7 @@
 name := "template-scala-parallel-similarproduct"
 
 organization := "org.apache.predictionio"
-scalaVersion := "2.11.8"
+scalaVersion := "2.11.12"
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
-  "org.apache.spark"        %% "spark-mllib"              % "2.1.1" % "provided")
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
+  "org.apache.spark"        %% "spark-mllib"              % "2.4.0" % "provided")
diff --git a/tests/pio_tests/engines/recommendation-engine/build.sbt b/tests/pio_tests/engines/recommendation-engine/build.sbt
index 4688165..1445417 100644
--- a/tests/pio_tests/engines/recommendation-engine/build.sbt
+++ b/tests/pio_tests/engines/recommendation-engine/build.sbt
@@ -19,13 +19,13 @@
 
 assemblySettings
 
-scalaVersion in ThisBuild := sys.env.getOrElse("PIO_SCALA_VERSION", "2.11.8")
+scalaVersion in ThisBuild := sys.env.getOrElse("PIO_SCALA_VERSION", "2.11.12")
 
 name := "template-scala-parallel-recommendation"
 
 organization := "org.apache.predictionio"
 
 libraryDependencies ++= Seq(
-  "org.apache.predictionio" %% "apache-predictionio-core" % "0.13.0" % "provided",
+  "org.apache.predictionio" %% "apache-predictionio-core" % "0.14.0" % "provided",
   "org.apache.spark"        %% "spark-core"    % sys.env.getOrElse("PIO_SPARK_VERSION", "2.1.1") % "provided",
   "org.apache.spark"        %% "spark-mllib"   % sys.env.getOrElse("PIO_SPARK_VERSION", "2.1.1") % "provided")