【问题标题】:NotImplementedError: Invalid returnType with grouped map Pandas UDFsNotImplementedError:具有分组映射 Pandas UDF 的无效 returnType
【发布时间】:2020-05-11 17:21:59
【问题描述】:

我的 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 的列,而其余列是包含两个浮点数的元组。我用于定义模式的代码如下,基本上为不是id 的每一列定义了StructType() 元组。

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 并且输出打印了我的整个架构并说它不受支持。究竟什么不支持,我做错了什么?

【问题讨论】:

    标签: python pandas apache-spark pyspark


    【解决方案1】:

    经过更多调试,我发现不支持嵌套结构类型。支持的类型见here

    【讨论】:

    • 您也可以查看here 以查看尚不支持的类型。
    猜你喜欢
    • 2018-09-04
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    相关资源
    最近更新 更多