python - tutorial - spark textfile pyspark




Erstellen Sie einen einzeiligen Datenrahmen aus der Liste der Liste PySpark (2)

Ich finde es nützlich, sich das Argument für createDataFrame() als eine Liste von Tupeln createDataFrame() wobei jeder Eintrag in der Liste einer Zeile im DataFrame entspricht und jedes Element des Tupels einer Spalte entspricht.

Sie können die gewünschte Ausgabe erhalten, indem Sie jedes Element in der Liste zu einem Tupel machen:

data = [([1.1, 1.2],), ([1.3, 1.4],), ([1.5, 1.6],)]
dataframe = sqlCtx.createDataFrame(data, ['features'])
dataframe.show()
#+----------+
#|  features|
#+----------+
#|[1.1, 1.2]|
#|[1.3, 1.4]|
#|[1.5, 1.6]|
#+----------+

Oder wenn das Ändern der Quelle umständlich ist, können Sie dies gleichermaßen tun:

data = [[1.1, 1.2], [1.3, 1.4], [1.5, 1.6]]
dataframe = sqlCtx.createDataFrame(map(lambda x: (x, ), data), ['features'])
dataframe.show()
#+----------+
#|  features|
#+----------+
#|[1.1, 1.2]|
#|[1.3, 1.4]|
#|[1.5, 1.6]|
#+----------+

Ich habe Daten wie diese data = [[1.1, 1.2], [1.3, 1.4], [1.5, 1.6]] Ich möchte einen PySpark-Datenrahmen erstellen

Ich benutze schon

dataframe = SQLContext.createDataFrame(data, ['features'])

aber ich bekomme immer

+--------+---+
|features| _2|
+--------+---+
|     1.1|1.2|
|     1.3|1.4|
|     1.5|1.6|
+--------+---+

Wie kann ich das unten stehende Ergebnis erhalten?

+----------+
|features  |
+----------+
|[1.1, 1.2]|
|[1.3, 1.4]|
|[1.5, 1.6]|
+----------+

Sie benötigen eine map , um die tuples in ein array zu konvertieren und in createDataFrame

dataframe = sqlContext.createDataFrame(sc.parallelize(data).map(lambda x: [x]), ['features'])

Sie sollten bekommen, wie Sie es wünschen

+----------+
|  features|
+----------+
|[1.1, 1.2]|
|[1.3, 1.4]|
|[1.5, 1.6]|
+----------+




apache-spark-sql