我有一组avro文件,它们以.avsc文件中定义的已知模式保存在aws S3中。有没有一种方法可以使用定义的模式在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
https://spark.apache.org/docs/latest/sql-data-sources-avro.html