将py4j.java\u gateway.javaobject转换为structtype pyspark

yv5phkfx  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(492)

我从下面的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\u gateway.javaobject'>。我想转换为pyspark.sql.types.structtype。
有什么办法可以投这个吗?我能够打印的对象和预期的内容如下

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

谢谢

oewdyzsn

oewdyzsn1#

能够解决这个问题

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

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

相关问题