Azure新旧存储账户复用Auto Loader失败,如何继续处理数据?
解决Azure存储账户迁移后Auto Loader检查点冲突的方案
方案一:修改检查点里的旧路径(保留历史进度)
要是想接着之前的进度续传,不用重新全量跑:
- 找到新存储里迁移过来的检查点目录(一般在
checkpoint/_checkpoint下面,有offset、schema这类文件) - 用Azure Storage Explorer或者
az storage blob download把这些文件下载到本地 - 批量替换文件里所有旧存储的地址(比如把
https://oldaccount.blob.core.windows.net/oldcontainer换成新存储的对应路径) - 再用
az storage blob upload或者Storage Explorer把改好的文件传回去 - 把代码里的数据源、检查点路径改成新存储的地址,重新启动程序就行
方案二:重置检查点,全量重跑(数据量小或允许全量同步)
如果数据不多,或者能接受从头同步,直接重置检查点:
- 删除新存储里迁移过来的检查点目录
- 把代码里的数据源和检查点路径改成新存储的地址
- 启动Auto Loader,它会重新扫描新存储的数据,生成新的检查点记录
方案三:用路径映射配置(不用改文件)
不想手动改检查点文件的话,在Spark配置里加路径映射规则:
- Scala环境初始化SparkSession时加:
spark.conf.set("fs.azure.path.style.access", "true") spark.conf.set("fs.azure.account.mapping.oldaccount.blob.core.windows.net", "newaccount.blob.core.windows.net")
- Python环境则是:
spark.conf.set("fs.azure.path.style.access", "true") spark.conf.set("fs.azure.account.mapping.oldaccount.blob.core.windows.net", "newaccount.blob.core.windows.net")
- 记得把代码里的数据源和检查点路径换成新存储的,程序会自动把检查点里的旧路径映射到新路径
内容的提问来源于stack exchange,提问作者Afonso de Paula Feliciano
相关产品推荐
相关产品推荐

