Skip to content
TensorFlowOnSpark brings TensorFlow programs to Apache Spark clusters.
Branch: master
Clone or download
leewyang Merge pull request #412 from yahoo/pom
update TensorFlow in pom.xml to 1.13.1
Latest commit 5e4b6c1 Apr 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates Jul 26, 2018
docs/source v1.4.3 release Apr 5, 2019
examples add back code to terminate feed Mar 8, 2019
lib travis integration Sep 6, 2018
scripts remove Feb 14, 2017
src add license header to scala files Feb 21, 2018
tensorflowonspark v1.4.3 release Apr 5, 2019
test make tfso server ip,port be configurable Nov 9, 2018
.gitignore make tfso server ip,port be configurable Nov 9, 2018
.travis.settings.xml matrix builds for python + scala; bintray integration; fix mnist/spar… Sep 20, 2018
.travis.yml Spark 2.3.3 -> Spark 2.4.1 Apr 14, 2019 Update READMEs per guidelines Nov 16, 2018 Update READMEs per guidelines Nov 16, 2018
LICENSE initial check-in Jan 27, 2017 add note about lack of Windows support (#385) Jan 10, 2019
requirements.txt Spark 2.3.3 -> Spark 2.4.1 Apr 14, 2019
setup.cfg create universal package May 23, 2017 v1.4.3 release Apr 5, 2019


TensorFlowOnSpark brings scalable deep learning to Apache Hadoop and Apache Spark clusters.

Build Status PyPI version

By combining salient features from the TensorFlow deep learning framework with Apache Spark and Apache Hadoop, TensorFlowOnSpark enables distributed deep learning on a cluster of GPU and CPU servers.

It enables both distributed TensorFlow training and inferencing on Spark clusters, with a goal to minimize the amount of code changes required to run existing TensorFlow programs on a shared grid. Its Spark-compatible API helps manage the TensorFlow cluster with the following steps:

  1. Startup - launches the Tensorflow main function on the executors, along with listeners for data/control messages.
  2. Data ingestion
    • InputMode.TENSORFLOW - leverages TensorFlow's built-in APIs to read data files directly from HDFS.
    • InputMode.SPARK - sends Spark RDD data to the TensorFlow nodes via the feed_dict mechanism. Note that we leverage the Hadoop Input/Output Format to access TFRecords on HDFS.
  3. Shutdown - shuts down the Tensorflow workers and PS nodes on the executors.

Table of Contents


TensorFlowOnSpark was developed by Yahoo for large-scale distributed deep learning on our Hadoop clusters in Yahoo's private cloud.

TensorFlowOnSpark provides some important benefits (see our blog) over alternative deep learning solutions.

  • Easily migrate all existing TensorFlow programs with <10 lines of code change;
  • Support all TensorFlow functionalities: synchronous/asynchronous training, model/data parallelism, inferencing and TensorBoard;
  • Server-to-server direct communication achieves faster learning when available;
  • Allow datasets on HDFS and other sources pushed by Spark or pulled by TensorFlow;
  • Easily integrate with your existing data processing pipelines and machine learning algorithms (ex. MLlib, CaffeOnSpark);
  • Easily deployed on cloud or on-premise: CPU & GPU, Ethernet and Infiniband.


TensorFlowOnSpark is provided as a pip package, which can be installed on single machines via:

pip install tensorflowonspark

For distributed clusters, please see our wiki site for detailed documentation for specific environments, such as our getting started guides for single-node Spark Standalone, YARN clusters and AWS EC2. Note: the Windows operating system is not currently supported due to this issue.


To use TensorFlowOnSpark with an existing TensorFlow application, you can follow our Conversion Guide to describe the required changes. Additionally, our wiki site has pointers to some presentations which provide an overview of the platform.


API Documentation is automatically generated from the code.


Please join the TensorFlowOnSpark user group for discussions and questions. If you have a question, please review our FAQ before posting.

Contributions are always welcome. For more information, please see our guide for getting involved.


The use and distribution terms for this software are covered by the Apache 2.0 license. See LICENSE file for terms.

You can’t perform that action at this time.