PySpark: StructField (…,…, False) sempre retorna `nullable = true` em vez de` nullable = false`

Eu sou novo no PySpark e estou enfrentando um problema estranho. Estou tentando definir alguma coluna como não anulável ao carregar um conjunto de dados CSV. Posso reproduzir meu caso com um conjunto de dados muito pequeno (test.csv):

col1,col2,col3
11,12,13
21,22,23
31,32,33
41,42,43
51,,53

Há um valor nulo na linha 5, coluna 2, e eu não quero colocar essa linha dentro do meu DF. Defino todos os campos como não anuláveis (nullable=false), mas recebo um esquema com todas as três colunas tendonullable=true. Isso acontece mesmo se eu definir todas as três colunas como não anuláveis! Estou executando a versão mais recente disponível do Spark, 2.0.1.

Aqui está o código:

from pyspark.sql import SparkSession
from pyspark.sql.functions import *
from pyspark.sql.types import *

spark = SparkSession \
    .builder \
    .appName("Python Spark SQL basic example") \
    .config("spark.some.config.option", "some-value") \
    .getOrCreate()

struct = StructType([   StructField("col1", StringType(), False), \
                        StructField("col2", StringType(), False), \
                        StructField("col3", StringType(), False) \
                    ])

df = spark.read.load("test.csv", schema=struct, format="csv", header="true")

df.printSchema() retorna:

root
 |-- col1: string (nullable = true)
 |-- col2: string (nullable = true)
 |-- col3: string (nullable = true)

edf.show() retorna:

+----+----+----+
|col1|col2|col3|
+----+----+----+
|  11|  12|  13|
|  21|  22|  23|
|  31|  32|  33|
|  41|  42|  43|
|  51|null|  53|
+----+----+----+

enquanto eu espero isso:

root
 |-- col1: string (nullable = false)
 |-- col2: string (nullable = false)
 |-- col3: string (nullable = false)

+----+----+----+
|col1|col2|col3|
+----+----+----+
|  11|  12|  13|
|  21|  22|  23|
|  31|  32|  33|
|  41|  42|  43|
+----+----+----+

questionAnswers(1)

yourAnswerToTheQuestion