将py4j.java_gateway.JavaObject转换为StructType pyspark

时间:2020-06-26 10:44:22

标签: apache-spark pyspark apache-spark-sql pyspark-dataframes

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

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

和作为返回的sqlSchema的类型。我想转换为pyspark.sql.types.StructType。

有什么办法强制转换吗?我能够打印对象,并且期望的内容如下所示

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

谢谢

1 个答案:

答案 0 :(得分:0)

能够解决这个问题

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

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