NotImplementedError:带有分组地图熊猫UDF的returnType无效

时间:2020-05-11 17:21:59

标签: 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),
 ...

,类型为: 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)

但是,当运行我的UDF时,我收到一个NotImplementedError,输出显示我的整个模式,并说它不受支持。到底不支持什么?我在做什么错了?

1 个答案:

答案 0 :(得分:0)

经过更多调试后,我发现不支持Nested StructTypes。找到受支持的类型here