首页 > 解决方案 > 将 py4j.java_gateway.JavaObject 转换为 StructType pyspark

问题描述

我正在调用 scala 库中的一个函数,如下所示,将 avro 模式转换为 sqlschema。

schema = avroschema
jvm_gateway = spark_context._gateway.jvm
sqlSchema = jvm_gateway.org.apache.spark.sql.avro.SchemaConverters.toSqlType(schema).dataType()

sqlSchema 的类型返回为 <class 'py4j.java_gateway.JavaObject'>。我想转换为 pyspark.sql.types.StructType。

有什么办法可以投这个吗?我能够打印对象并且预期的内容如下所示

StructType(StructField(timestamp,LongType,true), StructField(key1,IntegerType,true), StructField(key2,StringType,true))

谢谢

标签: apache-sparkpysparkapache-spark-sqlpyspark-dataframes

解决方案


能够解决这个问题

sqlSchema = jvm_gateway.org.apache.spark.sql.avro.SchemaConverters.toSqlType(schema).dataType()
finalSchema = _parse_datatype_json_string(sqlSchema.json())

现在类型是“pyspark.sql.types.StructType”


推荐阅读