0

我在使用复杂的嵌套结构列的 pyspark 中进行 json 转换时遇到问题。from_json 的架构似乎没有表现。例子:

import pyspark.sql.functions as f

df = spark.createDataFrame([[1,'a'],[2,'b'],[3,'c']], ['rownum','rowchar'])\
.withColumn('struct', f.expr("transform(array(1,2,3), i -> named_struct('a1',rownum*i,'a2',rownum*i*2))"))
df.display()
df.withColumn('struct',f.to_json('struct')).withColumn('struct',f.from_json('struct',df.schema['struct'])).display()
df.withColumn('struct',f.to_json('struct')).withColumn('struct',f.from_json('struct',df.select('struct').schema)).display()

失败了

Cannot parse the schema in JSON format: Failed to convert the JSON string (big JSON string) to a data type

不确定这是否是我的语法错误,失败的边缘情况,错误的做事方式或其他原因。

4

1 回答 1

1

您没有将正确的架构传递给from_json. 试试这个:

df.withColumn('struct', f.to_json('struct')) \
  .withColumn('struct', f.from_json('struct', df.schema["struct"].dataType)) \
  .display()
于 2022-02-19T11:29:03.457 回答