title: Why does Spark SQL turn nullable on for string column even when all values specified?
body: <p>So for something like this:</p>
  
  <pre><code>case class RandomClass(stringOne: String, stringTwo: String, numericOne: Int)
  val ds = Seq(
    RandomClass("a", null, 1),  
    RandomClass("a", "x", 3), 
    RandomClass("a", "y", 4), 
    RandomClass("a", null, 5)
  ).toDS()
  
  ds.printSchema()
  </code></pre>
  
  <p>results in</p>
  
  <pre><code>root
   |-- stringOne: string (nullable = true)
   |-- stringTwo: string (nullable = true)
   |-- numericOne: integer (nullable = false)
  </code></pre>
  
  <p>why would <code>stringOne</code> be <code>nullable?</code> Strangely, <code>numericOne</code> is inferred correctly. I assume I am just missing something about the relationship between Dataset and DataFrame API?</p>