apache-spark - 将 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))
谢谢
解决方案
能够解决这个问题
sqlSchema = jvm_gateway.org.apache.spark.sql.avro.SchemaConverters.toSqlType(schema).dataType()
finalSchema = _parse_datatype_json_string(sqlSchema.json())
现在类型是“pyspark.sql.types.StructType”
推荐阅读
- sql - 如何在列 sql 上连接选择两个具有条件的表
- php - 如何翻译验证约束消息
- r - R中的求和变量
- react-native - React Native - 来自本地主机 URL 的图像未呈现
- javascript - 如何在不同的 div 中有两个单独的复选框,同时选中和取消选中?
- java - 循环总是执行两次
- css - 列表样式图像未在 Chrome/Gmail 中加载
- java - 使用 @ActivateProfiles 在 JUnit5 测试中加载的 SpringBoot 属性文件不正确
- java - 使用 JUnit 5 从 CSV 文件读取测试数据的最佳方法是什么?
- java - 我怎样才能翻转这种模式倒计时模式?