NotImplementedError:分组地图 Pandas UDF 的返回类型无效

raf*_*asq 6 python pandas apache-spark pyspark

我的 Pandas UDF 的 output_schema 包含以下字段:

Out[183]: [StructField(id,StringType,true),
 StructField(2018-01-01,StructType(List(StructField(real,FloatType,true),StructField(imag,FloatType,true))),true),
 StructField(2018-01-02,StructType(List(StructField(real,FloatType,true),StructField(imag,FloatType,true))),true),
 StructField(2018-01-03,StructType(List(StructField(real,FloatType,true),StructField(imag,FloatType,true))),true),
 StructField(2018-01-04,StructType(List(StructField(real,FloatType,true),StructField(imag,FloatType,true))),true),
 StructField(2018-01-05,StructType(List(StructField(real,FloatType,true),StructField(imag,FloatType,true))),true),
 StructField(2018-01-06,StructType(List(StructField(real,FloatType,true),StructField(imag,FloatType,true))),true),
 StructField(2018-01-07,StructType(List(StructField(real,FloatType,true),StructField(imag,FloatType,true))),true),
 StructField(2018-01-08,StructType(List(StructField(real,FloatType,true),StructField(imag,FloatType,true))),true),
 ...
Run Code Online (Sandbox Code Playgroud)

并且类型为: Out[185]: pyspark.sql.types.StructType

我想要输出的是一列,而id其余列是包含两个浮点数的元组。我用于定义架构的代码如下,基本上StructType()为不是id.

fields = []
for f in json.loads(skeleton_schema.json())["fields"]:
  if f["name"] != "id":
    fields.append(StructField(f["name"], StructType([ 
          StructField(FloatType(), True),
          StructField(FloatType(), True)
        ]), True))
  else:
      fields.append(StructField.fromJson(f))
output_schema = StructType(fields)
Run Code Online (Sandbox Code Playgroud)

但是,当运行我的 UDF 时,我收到一个NotImplementedError,输出打印我的整个架构并表示不支持它。到底什么不受支持,我做错了什么?

raf*_*asq 10

经过更多调试,我发现不支持嵌套结构类型。可以在此处找到支持的类型。