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