Apache spark Spark:如何使用Avro模式创建数据集?

Apache spark Spark:如何使用Avro模式创建数据集?,apache-spark,avro,apache-spark-dataset,avsc,Apache Spark,Avro,Apache Spark Dataset,Avsc,我有一组保存在aws S3中的avro文件,在.avsc文件中定义了已知的模式。有没有办法在spark中使用已定义的模式创建对象数据集 模式如下所示: { "type" : "record", "name" : "NameRecord", "namespace" : "com.XXX.avro", "doc" : "XXXXX", "fields" : [ { "name" : "Metadata", "type" : [ "null", { "t

我有一组保存在aws S3中的avro文件,在.avsc文件中定义了已知的模式。有没有办法在spark中使用已定义的模式创建对象数据集

模式如下所示:

{
  "type" : "record",
  "name" : "NameRecord",
  "namespace" : "com.XXX.avro",
  "doc" : "XXXXX",
  "fields" : [ {
    "name" : "Metadata",
    "type" : [ "null", {
      "type" : "record",
      "name" : "MetaNameRecord",
      "doc" : "XXXX",
      "fields" : [ {
        "name" : "id",
        "type" : "int"
      }, {
        "name" : "name",
        "type" : [ "null", "string" ],
        "default" : null
      }]
}

我想创建一个NameRecord数据集:根据定义,dataset[NameRecord]

Avro对象文件中已经有一个模式

我们只需要这样做

val df = spark.read.format("avro").load("s3://path")
df.schema

Dataframe将为我们提供[Row]的数据集。我们需要在每个记录上执行复杂的函数,这样Dataset[NameRecord]将是使用模式pojo和轻松获取结构化字段的理想选择。您应该能够使用
load().as()
为其提供特定的模式