如何解决Azure Databricks Autoloader的cloudfiles源偏移不匹配错误
Autoloader流读取偏移不匹配错误解决方案
错误触发原因
当Autoloader流正在读取的数据源中有部分文件被删除时,就会出现该偏移不匹配错误。
参考配置代码
try: raw_df = spark.readStream.format("cloudFiles") \ .option("cloudFiles.format","csv") \ .option("cloudFiles.includeExistingFiles", "true") \ .option("cloudFiles.allowOverwrites", "true") \ .option("cloudFiles.schemaLocation", opPath.outputPath +"/checkpoints/" + storageAccountInfo.adlsContainerName) \ .option("delimiter","\t")\ .load(source) except Exception as f: print(f)
修复方案
- 优先确认数据源路径下的文件完整性,流任务运行过程中不要手动删除、移动正在被读取的源文件,这是导致该错误最常见的原因。
- 如果业务场景允许源文件变更,可以在现有配置基础上新增
cloudFiles.ignoreDeletedFiles选项并设置为true,让Autoloader自动忽略已删除的文件,跳过偏移校验逻辑。 - 也可以添加
cloudFiles.maxFilesPerTrigger参数限制每批次读取的文件数量,降低单批次遇到文件丢失的概率,同时也方便排查是哪个文件触发的异常。 - 如果错误已经触发导致流任务无法启动,可以先清空当前任务对应的checkpoint目录内容,重新启动任务即可恢复,该操作会触发Autoloader全量重新读取源路径下的现有文件,业务侧需要自行处理重复消费的问题。
内容的提问来源于stack exchange,提问作者SWATHI.M SHETTY
相关产品推荐
相关产品推荐

