0

我有一组 avro 文件保存在 aws S3 中,已知模式在 .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]

4

1 回答 1

1

根据定义,Avro 对象文件中已经有一个模式。

应该只需要这样做

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

https://spark.apache.org/docs/latest/sql-data-sources-avro.html

于 2020-01-09T00:21:58.970 回答