title: What are the available output formats for writeStream in Spark structured streaming
body: <p>Consider a generic <code>writeStream</code> invocation - with the typical <em>"console"</em> output format:</p>
  
  <pre><code>out.writeStream
    .outputMode("complete")
    .format("console")
    .start()
  </code></pre>
  
  <p>What are the alternatives?  I noticed actually that the <em>default</em> is <code>parquet</code>:</p>
  
  <p>In <code>DataStreamWriter</code>: </p>
  
  <pre><code>  /**
     * Specifies the underlying output data source.
     *
     * @since 2.0.0
     */
    def format(source: String): DataStreamWriter[T] = {
      this.source = source
      this
    }
  
    private var source: String = df.sparkSession.sessionState.conf.defaultDataSourceName
  </code></pre>
  
  <p>In <code>SQLConf</code>: </p>
  
  <pre><code>  def defaultDataSourceName: String = getConf(DEFAULT_DATA_SOURCE_NAME)
  
    val DEFAULT_DATA_SOURCE_NAME = buildConf("spark.sql.sources.default")
      .doc("The default data source to use in input/output.")
      .stringConf
      .createWithDefault("parquet")
  </code></pre>
  
  <p>But then how is the <em>path</em> for the parquet file specified? What are the other formats supported and what options do they have/require?</p>