当前位置: 首页 > 知识库问答 >
问题:

从json模式表示创建spark dataframe模式

申屠俊发
2023-03-14

有没有办法将数据帧模式序列化为json并在以后反序列化?

用例很简单:我有一个json配置文件,其中包含我需要读取的数据帧的模式。我希望能够从现有模式(在数据帧中)创建默认配置,并希望能够通过从json字符串读取来生成稍后使用的相关模式。

共有2个答案

汝才良
2023-03-14

我正在发布一个pyspark版本的Assaf回答的问题:

from pyspark.sql.types import StructType    

# Save schema from the original DataFrame into json:
schema_json = df.schema.json()

# Restore schema from json:
import json
new_schema = StructType.fromJson(json.loads(schema_json))
赵嘉纳
2023-03-14

为此有两个步骤:从现有数据帧创建json,并从之前保存的json字符串创建模式。

从现有数据帧创建字符串

    val schema = df.schema
    val jsonString = schema.json

从json创建架构

    import org.apache.spark.sql.types.{DataType, StructType}
    val newSchema = DataType.fromJson(jsonString).asInstanceOf[StructType]
 类似资料:
  • 我将JSON文件&JSON模式解析为AVRO模式。我有点困惑,我是否必须使用AVRO文档中定义的数据类型来编写手动AVRO模式。 或者是否有任何自动化的方法/函数/程序可以完全按照要求工作?

  • 问题内容: 我用来将Java对象序列化/反序列化为json。我想在中显示它,并且需要一个架构来做出更好的描述。这将允许我编辑对象并添加比实际更多的数据。 可以提供json模式吗? 是否有其他框架具有该功能? 问题答案: Gson库可能不包含类似的功能,但是您可以尝试使用Jackson库和jackson- module-jsonSchema 模块解决您的问题。例如,对于以下类别: 这个程序: 打印以

  • 有没有一种方法可以直接从基于avro模式的parquet文件在Amazon Athena中创建表?模式被编码到文件中,所以我需要自己实际创建DDL看起来很愚蠢。 我看到了这个,还有另一个复制品 但它们与Hive直接相关,这对雅典娜不起作用。理想情况下,我正在寻找一种以编程方式执行此操作的方法,而无需在控制台上定义它。

  • 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。 创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建型模式隐藏了类的实例的

  • 问题内容: 有人知道如何从现有的XML模式(XSD文件)生成JSON模式吗?有没有可用的工具? 问题答案: 免责声明 :我是Jsonix的作者,Jsonix是一个功能强大的开源XML <-> JSON JavaScript映射库。 今天,我发布了具有新JSON Schema生成功能的新版本的Jsonix Schema Compiler 。 让我们以采购订单模式为例。这是一个片段: 您可以使用提供的

  • 一、前言 创建型模式 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。 创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建