从Avro到JSON

906 阅读5分钟

Avro to JSON

介绍Avro和JSON

它的定义是:avro是提供序列化、扁平化和依赖行格式的数据存储库,它在很大程度上被用作序列化的数据存储库格式,它有一个系统的结构,用于从完整的行中读取数据,它对读取数据的组织更短,文件有模式,其中的形成和类型已被保留,并以JSON格式展示,因为它被avro支持,对于任何系统来说,人类非常容易读取,为了转换,我们需要做直接映射,以便产生的JSON将有相同的结构。

什么是Avro到JSON?

它是一种序列化机制,它可以被构建为在各种Hadoop项目中序列化和交换大型数据,它能够以密集的二进制格式序列化数据,模式是JSON格式,可以描述字段名和数据类型。我们可以在Java和Python等各种语言中转换为JSON,在Java中使用avro进行转换,我们需要使用'ConvertRecord'或'ConvertAvroToJSON',如果avro文件中没有模式,那么我们将不得不放弃,它可以被转换为模式和文件,这意味着avro可以被转换为JSON格式和JSON文件。我们也可以在数据框架的帮助下将avro文件转换为JSON文件格式,并以另一种方式在JSON格式的帮助下将avro文件转换为JSON文件格式,因此avro文件可以有标记,将巨大的数据集分配为子集。

模式

它是一种基于模式的序列化机制,可以将模式作为输入,avro可以有自己的标准来描述模式,其中可以有文件的类型、记录的位置、记录的名称、记录中的字段及其相等的数据类型,avro模式可以用JSON的文档格式构建,这是一种数据交换格式,可以是一个JSON字符串、一个JSON对象和一个JSON阵列。

如果我们试图构建一个带有数据操作属性的模式,那么我们需要描述格式,以便对象能够读写,当我们试图描述avro格式时,我们必须在'.avsc'文件中描述模式,当我们试图在JSON模式中安排数据操作属性时,我们需要描述格式,以便数据对象能够读写,为了指定JSON,我们需要描述JSON文件。

代码。

{ "type": "record", "namespace": "avroschema", "name": "Student", "fields": [ {"name": "Name", "type": "string"}, {"name": "Class", "type": "int"} ] }

**输出。**JSON模式

Avro to JSON 1

在上面的例子中,类型可以描述数据类型,命名空间可以描述对象在其中的剩余部分,名称可以描述字段的名称,字段也描述字段的名称。

文件格式转换

让我们看看如何在scala中把文件转换成JSON文件格式,所以为了转换,我们首先要把avro文件读成一个数据框,然后再把它转换成JSON文件,我们知道avro是开源的,可以支持数据序列化和交换,可以一起使用。通过使用序列化,任何程序都可以有效地将数据序列化为文件,我们知道它有密集的数据存储库,因此它可以在文件中保留数据定义和数据,avro可以将数据定义保留为JSON格式,这样人类就可以很容易地读和写。

avro文件可能包含标记,可以帮助将大的数据集分配到子集中,在某些情况下,一些数据交换服务可以使用代码生成器来显示数据定义并生成代码来接收数据。

1.使用数据框架读取Avro文件

这些函数不被spark支持,因此我们可以使用'DataSource'格式的avro,并且使用load函数来读取avro文件。

代码。

val df = spark.read.format("avrofile") .load("src/main/resources/zipcodes.avro") df.show( ) df.printSchema( )

如果我们有数据分离,我们可以使用where()函数来加载特定的分离。

代码。

spark.read .format("avro") .load("zipcodes_partition.avro") .where(col("Zipcode") === 19802) .show()

spark.read.json("path")可以将JSON文件读入Spark数据框中,该方法可以接受文件路径作为参数。

2.转换文件

这是另外一种将文件转换成JSON文件的方法,让我们看看如何在JSON文件格式的帮助下将文件转换成JSON文件。

我们必须使用一个链接来转换为JSON,如下所示。

代码。

df.write.mode(SaveMode.Overwrite) .json("/tmp/json/zipcodes.json")

我们可以把上面写成。

代码:

df.write .json("/tmp/json/zipcodes.json")

例子。

代码。

package com.sparkbyexamples.spark.dataframe import org.apache.spark.sql.{SaveMode, SparkSession} object AvroToJson extends App { val spark: SparkSession = SparkSession.builder() .master("local[1]") .appName("avrotojsonfile") .getOrCreate() spark.sparkContext.setLogLevel("mistake") val df = spark.read.format("avro") .load("src/main/resources/zipcodes.avro") df.show() df.printSchema() df.write.mode(SaveMode.Overwrite) .json("/tmp/json/zipcodes.json") }

在上面的例子中,我们有使用数据框架将avro文件转换为JSON文件格式的代码,为此我们导入了包,然后我们写了五行代码来读取avro文件,我们还在最后两行写了代码,用于将文件转换成JSON文件格式。

总结

在这篇文章中,我们看到了avro如何转换为JSON模式和JSON文件,avro文件可以在数据框架和JSON格式的帮助下转换为JSON文件,所以这篇文章将有助于理解这一概念。

推荐文章

这是一个关于Avro到JSON的指南。这里我们讨论了介绍、模式和文件,以便更好地理解。你也可以看看下面的文章来了解更多----。

  1. TypeScript JSON
  2. jQuery getJSON()
  3. JQuery JSON解析
  4. C#中的JSON解析器

The postAvro to JSONappeared first onEDUCBA.