In PySpark (v1.6.2) werden beim Konvertieren einer RDD in einen DataFrame mit einem angegebenen Schema Felder, deren Werttyp nicht mit dem deklarierten Wert übereinstimmt Das Schema wird in null
konvertiert.PySpark SQLContext.createDataFrame erzeugt Nullen, wenn deklarierte und tatsächliche Feldtypen nicht übereinstimmen
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import StructType, StructField, DoubleType
sc = SparkContext()
sqlContext = SQLContext(sc)
schema = StructType([
StructField("foo", DoubleType(), nullable=False)
])
rdd = sc.parallelize([{"foo": 1}])
df = sqlContext.createDataFrame(rdd, schema=schema)
print df.show()
+----+
| foo|
+----+
|null|
+----+
Ist das ein PySpark Bug oder nur sehr überraschendes aber beabsichtigtes Verhalten? Ich würde entweder erwarten, dass eine TypeError
ausgelöst wird oder dass die int
in float
kompatibel mit DoubleType
konvertiert werden kann.