2017-06-23 3 views
0

Ich versuche, einen Datenrahmen mit der folgenden Liste von Spaltennamen zu generieren:Generieren einen PySpark Datenrahmen mit Liste Verständnis

cols = [ 
    'name', 
    'age', 
    'team', 
    'column1', 
    'column2', 
    'column3', 
    'column4', 
    'column5', 
    'column6', 
] 

rows = [Row(**{k: '1776-07-04'}) for k in cols] 
df = spark.createDataFrame(rows) 

Wenn ich df.columns ausführen, werden die Spalten aus der Liste oben wie erwartet zurückgegeben. Aber wenn ich df.show laufen lasse, erhalte ich folgende Fehlermeldung:

Caused by: java.lang.IllegalStateException: Input row doesn't have expected number of values required by the schema. 9 fields are required while 1 values are provided.

Und so ultimatley I (etwas) zu verstehen, warum ich diesen Fehler, aber ich hatte den Eindruck, dass 1776-07-04 würde nur zugewiesen werden alle/alle Werte. Was fehlt mir hier?

Antwort

1

Dies liegt daran, dass Sie einen Datenrahmen mit 9 Zeilen erstellen, aber jede Zeile nur Daten für eine der Spalten enthält.

der richtige Weg, um eine einzelne Zeile mit allen 9 Spalten einen Wert von ‚1776.07.04‘ ist

>>> df = spark.createDataFrame([Row(**{k:'1776-07-04' for k in cols})], cols) 
>>> df.show() 
+----------+----------+----------+----------+----------+----------+----------+----------+----------+ 
|  name|  age|  team| column1| column2| column3| column4| column5| column6| 
+----------+----------+----------+----------+----------+----------+----------+----------+----------+ 
|1776-07-04|1776-07-04|1776-07-04|1776-07-04|1776-07-04|1776-07-04|1776-07-04|1776-07-04|1776-07-04| 
+----------+----------+----------+----------+----------+----------+----------+----------+----------+ 
+0

Danke für die Erklärung zugewiesen zu erstellen. – srylotsquestions

Verwandte Themen