Azure Databricks 为 Apache Spark 原生支持的所有数据格式提供内置关键字绑定。 Azure Databricks 使用 Delta Lake 作为读取和写入数据和表的默认协议,而 Apache Spark 使用 Parquet。 以下章节介绍了在 Azure Databricks 上查询每种数据格式时可用的选项和配置。
大多数格式都支持通过 compression 选项进行写入压缩。 关于每种格式的支持值,请参见 DataFrameWriter 选项。 Azure Databricks还可以直接读取多种格式的预压缩文件,并在必要时解压缩Azure Databricks上的压缩文件。
有关 Apache Spark 数据源的详细信息,请参阅通用加载/保存函数和泛型文件源选项。
开放表格格式
支持ACID事务、模式演化及跨引擎互操作性的表格式。
| Format | Description |
|---|---|
| Delta Lake | Azure Databricks 上读写数据及表的默认格式。 |
| 冰山 | 可以读写 Iceberg 表,并与外部 Iceberg 引擎互操作。 |
| OpenSharing | 使用开放共享协议读取共享表和数据。 |
列式格式
针对分析读取性能和压缩率进行优化的二进制列式格式。
| Format | Description |
|---|---|
| Parquet | Apache Spark 默认采用列式格式,具有高效的压缩和编码功能。 |
| ORC | 一种内置压缩并支持轻量级索引的列式格式。 |
基于文本的格式
适用于模式灵活或不断演变的交换、配置和记录的人类可读格式。
| Format | Description |
|---|---|
| JSON | 读取和写入JSON文件,包括多行记录和模式推断选项。 |
| CSV | 读取和写入分隔符文本文件,并提供用于标头、分隔符和格式不正确记录的选项。 |
| XML | 通过指定行标签和模式来读写XML文件。 |
| 文本 | 一次一行或一行地读取和写入纯文本文件。 |
二进制与专用格式
二进制序列化格式和Azure Databricks专用数据源。
| Format | Description |
|---|---|
| Avro | 读取和写入Avro文件,并在流媒体中处理Avro编码的载荷。 |
| MLflow 试验 | 使用自定义 mlflow-experiment 关键字加载 MLflow 实验运行数据。 |
非结构化数据
用于存储和处理文档、图片、音频及其他非结构化文件的格式和类型。
| Format | Description |
|---|---|
| 处理非结构化数据 | 存储、管理和处理非结构化数据,如文档、图片和音频。 |
| 二进制 | 将文件读取为原始二进制记录,包括图像和其他非结构化数据。 |
| Image | 加载机器学习工作负载的图像数据。 Databricks 建议将图片加载为 binary 数据。 |
| FILE | 存储对非结构化文件的受治理引用,而不是使用 BINARY 或 STRING。 |
| 将文件作为 FILE 类型导入 | 使用 SQL、表值函数和 Auto Loader,将非结构化文件作为 FILE 引用提取到表中。 |
| 带有UDF的进程文件 | 读取文件字节,提取图像和视频元数据,并生成带有UDF的派生文件。 |
半结构化数据
湖屋中处理嵌套和半结构化数据的模式和函数。
| Format | Description |
|---|---|
| 模型半结构化数据 | 在Variant、JSON字符串、结构和映射中选择,用于存储半结构化数据。 |
| 变量 | 使用 VARIANT 类型存储半结构化数据,以优化读写。 |
| 转换复杂数据类型 | 在Apache Spark中操作结构体、数组和映射。 |
| 高阶函数 | 利用内置的高阶函数对数组和映射进行变换。 |