什么是自动加载程序?
自动加载程序会在新数据文件到达云存储空间时以增量方式高效地对其进行处理,而无需进行任何其他设置。
自动加载程序如何工作?
自动加载程序会在新数据文件到达云存储空间时以增量方式高效地对其进行处理。 它提供了名为 cloudFiles
的结构化流式处理源。 给定云文件存储上的输入目录路径后,cloudFiles
源将在新文件到达时自动处理这些文件,你也可以选择处理该目录中的现有文件。 自动加载程序在增量实时表中同时支持 Python 和 SQL。
可以使用自动加载程序处理数十亿个文件以迁移或回填表。 自动加载程序可缩放以支持每小时近实时引入数百万个文件。
支持的自动加载器源
自动加载器可以从以下源加载数据文件:
- Amazon S3 (
s3://
) - Azure Data Lake Storage Gen2(ADLS Gen2,
abfss://
)
Azure Blob 存储 (
wasbs://
)注意
旧版 Windows Azure 存储 Blob 驱动程序 (WASB) 已弃用。 与 WASB 相比,ABFS 具有许多优势。 请参阅有关 ABFS 的 Azure 文档。 有关使用旧版 WASB 驱动程序的文档,请参阅使用 WASB(旧版)连接到 Azure Blob 存储。
- Databricks 文件系统(DBFS,
dbfs:/
)。
自动加载程序可以引入 JSON
、CSV
、XML
、PARQUET
、AVRO
、ORC
、TEXT
和 BINARYFILE
文件格式。
自动加载程序如何跟踪引入进度?
当文件被发现时,其元数据将保留在自动加载程序管道的检查点位置的可缩放键值存储 (RocksDB) 中。 这种键值存储可确保只处理一次数据。
如果发生故障,自动加载程序可以通过存储在检查点位置的信息从中断的位置恢复,并在将数据写入 Delta Lake 时继续提供一次性保证。 你无需自己维护或管理任何状态即可实现容错或恰好一次性语义。
使用自动加载程序和增量实时表进行增量引入
Databricks 建议在增量实时表中使用自动加载程序来引入增量数据。 增量实时表扩展了 Apache Spark 结构化流式处理中的功能,使你只需编写几行声明性 Python 或 SQL 即可部署生产质量的数据管道:
无需提供架构或检查点位置,因为增量实时表会自动管理管道的这些设置。 请参阅使用增量实时表加载数据。
Databricks 还建议每当使用 Apache Spark 结构化流式处理从云对象存储中引入数据时使用自动加载程序。 API 在 Python 和 Scala 中可用。
开始使用 Databricks 自动加载程序
请参阅以下文章,开始使用自动加载程序和增量实时表配置增量数据引入:
示例:常见的自动加载程序模式
有关常见自动加载程序模式的示例,请参阅常见的数据加载模式。
配置自动加载程序选项
可以根据数据量、多样性和速度来优化自动加载程序。
有关自动加载程序选项的完整列表,请参阅:
如果遇到意外的性能问题,请参阅常见问题解答。
配置自动加载程序文件检测模式
自动加载程序支持两种文件检测模式。 请参阅:
使用自动加载程序相比在文件中直接使用结构化流的优点
在 Apache Spark 中,可以使用 spark.readStream.format(fileFormat).load(directory)
以增量方式读取文件。 相比于文件源,自动加载程序具有以下优势:
- 可伸缩性:自动加载程序可以高效地发现数十亿个文件。 可以以异步方式执行回填,以避免浪费任何计算资源。
- 性能:使用自动加载程序发现文件的成本会根据要引入的文件的数量(而不是文件可能登陆的目录的数量)进行调整。 请参阅什么是自动加载程序目录列表模式?。
- 架构推理和演变支持:自动加载程序可以检测到架构偏移,在发生架构更改时通知你,并且会挽救那些原本会被忽略或丢失的数据。 请参阅自动加载程序架构推理的工作原理是怎样?
- 成本:自动加载程序使用本机云 API 来获取存储中存在的文件的列表。 另外,自动加载程序的文件通知模式可通过完全避免目录列表来帮助进一步降低云成本。 自动加载程序可在存储上自动设置文件通知服务,从而使文件发现成本大幅降低。