我对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
,输出显示我的整个模式,并说它不受支持。到底不支持什么?我在做什么错了?