Version Spark: 2.1
Par exemple, dans pyspark, je crée une liste
test_list = [['Hello', 'world'], ['I', 'am', 'fine']]
puis comment créer un cadre de données à partir de la liste test_list, où le type du cadre de données est comme ci-dessous:
DataFrame[words: array<string>]
voici comment -
from pyspark.sql.types import *
cSchema = StructType([StructField("WordList", ArrayType(StringType()))])
# notice extra square brackets around each element of list
test_list = [['Hello', 'world']], [['I', 'am', 'fine']]
df = spark.createDataFrame(test_list,schema=cSchema)
je devais travailler avec plusieurs colonnes et types - l'exemple ci-dessous comprend une colonne de chaîne et une colonne d'entier. Un léger ajustement du code de Pushkr (ci-dessus) donne:
from pyspark.sql.types import *
cSchema = StructType([StructField("Words", StringType())\
,StructField("total", IntegerType())])
test_list = [['Hello', 1], ['I am fine', 3]]
df = spark.createDataFrame(test_list,schema=cSchema)
sortie:
df.show()
+---------+-----+
| Words|total|
+---------+-----+
| Hello| 1|
|I am fine| 3|
+---------+-----+
Vous devez utiliser la liste d'objets Row ([Row]) pour créer un cadre de données.
from pyspark.sql import Row
spark.createDataFrame(list(map(lambda x: Row(words=x), test_list)))