You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Scala从Avro Schema中获取所有字段名称?

用Scala提取Avro Schema的所有字段名称

没问题!咱直接来实现和你Java版本功能一致的Scala代码,先回顾下你的示例Avro Schema:

{ 
  "type": "record", 
  "name": "wpmcn.MyPair", 
  "doc": "A pair of strings", 
  "fields": [ 
    {"name": "left", "type": "string"}, 
    {"name": "right", "type": "string"} 
  ] 
}

在Scala里,我们可以直接复用Avro的Java库(毕竟Scala和Java无缝兼容),同时借助Scala的函数式语法让代码更简洁:

import org.apache.avro.Schema
import java.io.InputStream

object AvroFieldExtractor extends App {
  // 加载Avro Schema文件
  val schemaInputStream: InputStream = getClass.getClassLoader.getResourceAsStream("pair.avsc")
  val schema: Schema = new Schema.Parser().parse(schemaInputStream)

  // 提取所有字段名称,用Scala的map操作替代Java的循环
  val fieldNames: List[String] = schema.getFields.map(_.name()).toList

  // 打印所有字段名
  fieldNames.foreach(println)
}

关键说明:

  • 和Java版本逻辑一致,通过类加载器获取schema文件的输入流,再用Schema.Parser解析得到Schema对象
  • Scala可以直接调用Java的schema.getFields()方法,返回的Java集合能通过.map(_.name())快速转换,最后转成Scala原生的List
  • 用foreach(println)替代Java的for循环写法,更贴合Scala的函数式编程风格

内容的提问来源于stack exchange,提问作者user9750148

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:55:42