title: Difference between StaticDataFrame and static DataFrame in pyspark
body: <p>I was reading through the Spark 2.2.0 documentation and found this weird reference to <code>Static DataFrames</code> <a href="https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#api-using-datasets-and-dataframes" rel="nofollow noreferrer">https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#api-using-datasets-and-dataframes</a></p>
  
  <blockquote>
    <p>Since Spark 2.0, DataFrames and Datasets can represent static, bounded data, as well as streaming, unbounded data. Similar to static Datasets/DataFrames, you can use the common entry point SparkSession (Scala/Java/Python/R docs) to create streaming DataFrames/Datasets from streaming sources, and apply the same operations on them as static DataFrames/Datasets.</p>
  </blockquote>
  
  <p>This is especially confusing because there is a concept of <code>Datasets</code> (which I understand as statically-typed dataframes) and <code>Static DataFrame</code> and a <code>Dataset</code> seems to be overlapping in  my mind now.</p>
  
  <p>What is the difference between <code>Static DataFrame</code> and <code>Regular DataFrame</code> and <code>Datasets</code> in Spark 2.2.0? Is the difference is because of streaming/non-streaming data? Is it because of statically/dynamically typed languages?</p>