如何通过编程获取Apache Spark支持的读写数据源格式列表?
获取Apache Spark支持的数据源格式列表(编程方式)
Spark没有提供像spark.sql.utils.getFormats()这样直接的API,但可以通过访问底层的数据源注册表,获取所有支持的格式字符串(也就是spark.read.format()和spark.write.format()中可用的参数)。
可行的编程实现(Python)
# 从SparkSession底层获取已注册的所有数据源格式 data_source_names = spark._jsparkSession.sessionState().catalog().listDataSourceNames() supported_formats = [str(name) for name in data_source_names] print(supported_formats)
执行后会输出类似这样的列表:
['parquet', 'csv', 'json', 'orc', 'jdbc', 'text', 'delta']
说明
- 这个列表包含Spark原生支持的格式,以及所有已加载的第三方数据源格式(比如Delta Lake、Iceberg,前提是对应的依赖包已添加到Spark环境)。
- 原生支持的格式基本都同时兼容读和写操作,第三方格式需根据其实现判断是否支持读写。
Spark原生支持的核心格式(翻译自官方文档)
Spark官方默认支持的数据源格式分为以下几类:
- 列式存储:Parquet、ORC
- 文本类:CSV、JSON、纯文本(Text)
- 数据库交互:JDBC/ODBC
- 扩展格式(需额外依赖):Avro、图片(Image)、二进制文件(Binary File)
配置校验场景的用法
把通过代码获取的supported_formats作为合法值集合,就能校验配置文件中指定的数据源格式是否合法,避免拼写错误或使用未加载的格式。
内容的提问来源于stack exchange,提问作者kakripr
相关产品推荐
相关产品推荐

