J'essaie de créer un schéma pour mon nouveau DataFrame et j'ai essayé diverses combinaisons de crochets et de mots clés, mais je n'ai pas réussi à comprendre comment faire fonctionner cela. Ma tentative actuelle:
from pyspark.sql.types import *
schema = StructType([
StructField("User", IntegerType()),
ArrayType(StructType([
StructField("user", StringType()),
StructField("product", StringType()),
StructField("rating", DoubleType())]))
])
Revient avec l'erreur:
elementType should be DataType
Traceback (most recent call last):
File "/usr/hdp/current/spark2-client/python/pyspark/sql/types.py", line 290, in __init__
assert isinstance(elementType, DataType), "elementType should be DataType"
AssertionError: elementType should be DataType
J'ai googlé, mais jusqu'à présent, aucun bon exemple d'un tableau d'objets.
Vous aurez besoin d'une propriété StructField
supplémentaire pour ArrayType
. Celui-ci devrait fonctionner:
from pyspark.sql.types import *
schema = StructType([
StructField("User", IntegerType()),
StructField("My_array", ArrayType(
StructType([
StructField("user", StringType()),
StructField("product", StringType()),
StructField("rating", DoubleType())
])
)
])
Pour plus d'informations, consultez ce lien: http://nadbordrozd.github.io/blog/2016/05/22/one-weird-trick-that-will-fix-your-pyspark-schemas/