创建包含ArrayType的Pyspark架构

创建包含ArrayType的Pyspark架构,pyspark,schema,spark-dataframe,rdd,Pyspark,Schema,Spark Dataframe,Rdd,我正在尝试为我的新数据框架创建一个模式,并尝试了各种括号和关键字的组合,但一直无法找出如何使其工作。我目前的尝试: from pyspark.sql.types import * schema = StructType([ StructField("User", IntegerType()), ArrayType(StructType([ StructField("user", StringType()), StructField("product", StringTy

我正在尝试为我的新数据框架创建一个模式,并尝试了各种括号和关键字的组合,但一直无法找出如何使其工作。我目前的尝试:

from pyspark.sql.types import *

schema = StructType([
  StructField("User", IntegerType()),
  ArrayType(StructType([
    StructField("user", StringType()),
    StructField("product", StringType()),
    StructField("rating", DoubleType())]))
  ])
返回错误:

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   

我在谷歌上搜索过,但到目前为止还没有对象数组的好例子。

您需要为
ArrayType
属性添加一个
StructField
。这一条应该有效:

from pyspark.sql.types import *

schema = StructType([
  StructField("User", IntegerType()),
  StructField("My_array", ArrayType(
      StructType([
          StructField("user", StringType()),
          StructField("product", StringType()),
          StructField("rating", DoubleType())
      ])
   )
])
有关更多信息,请查看此链接: