Преобразование py4j.java_gateway.JavaObject в pyspark StructType

Я вызываю функцию из библиотеки 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))

Спасибо


person Learnis    schedule 26.06.2020    source источник


Ответы (1)


в состоянии решить эту проблему

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

теперь Тип - pyspark.sql.types.StructType

person Learnis    schedule 26.06.2020