1

我一直在 Azure Data Lake 上运行 U-SQL 作业来更新分区表并且它们运行成功,但在“Finalizing”阶段失败并出现错误“JM_FinalMetadataOperationUserError”,堆栈跟踪如下:

Object ec2d8ab3-6df5-48eb-9169-daec48bf27a6.DeployedLogs.dbo.ConcurrentRecord__1__System.DateTime.FromBinary
(5246322962427387904 /* 2012-02-01T12:00:00.0000000Z */) 
already exists at Scope.MetadataService.Client.WcfBasedMetadataClient.ExecuteMetadataJob(MetadataJob mdJob) 
at MetaDataExecutor.RealMetaDataExecutor.Execute(MetadataJob job) 
at MetaDataExecutor.Committer.Commit(MetadataJob job)

错误消息指出:

Failed to write job meta-data due to user error

什么会导致这个问题?是因为从表中添加/截断的值吗?

将不胜感激。

4

1 回答 1

5

错误的原因是您同时运行了两个作业以创建相同的分区。一个脚本完成,第二个脚本在检测到分区已创建时失败。

我们目前正在研究如何改进错误消息并减少此类竞争条件的机会。

[添加] 以下是查看工作历史和竞争条件证据的详细信息(匿名帐户名):

  1. 该作业于 2016 年 5 月 31 日 00:56:06.100 编译。此时该分区不存在,因此该分区的 CreateEntityOperation 包含在代数中。日志:d,05/31/2016 00:56:06.100,ScopeMetadataService,GetMetaEntity,SrcFile=""SrcFunc=""SrcLine="0"Pid="17072"Tid="16548"TS="0x01D1BB11E2999697"String1="开始获取元实体ec2d8ab3-6df5-48eb-9169-daec48bf27a6.DeployedLogs.dbo.ConcurrentRecord__1__System.DateTime.FromBinary(5246322962427387904 /* 2012-02-01T12:00:00.0000000Z */)的信息

  2. 另一个作业在 05/31/2016 01:07:53.766 创建的分区(在失败作业编译之后但在失败作业的元数据操作执行之前)。工作网址:https://b ******.azuredatalakeanalytics.net/Jobs/909c4680-fd90-452a-93b0-fcc7860de504?api-version=2015-02-12 日志:d,05/31/2016 01 :07:53.766,ScopeMetadataService,CreateEntity,SrcFile=""SrcFunc=""SrcLine="0" Pid="17608" Tid="20028" TS="0x01D1BB138866CD29" String1="实体ec2d8ab3-6df5-48eb-9169-daec48bf27a6 .DeployedLogs.dbo.ConcurrentRecord__1__System.DateTime.FromBinary(5246322962427387904 /* 2012-02-01T12:00:00.0000000Z */) 创建成功。

  3. 用户作业在 05/31/2016 02:17:57.241 执行元数据操作以创建分区时失败,因为该分区是由另一个作业创建的。日志:e,05/31/2016 02:17:57.241,ScopeMetadataService,SMS 在提交元数据任务时出现意外异常,SrcFile=""SrcFunc=""SrcLine="0"Pid="17072"Tid="20972"TS= "0x01D1BB1D51DE3815" String1="Scope.MetadataService.Contract.FaultContract.AlreadyExistException: Object ec2d8ab3-6df5-48eb-9169-daec48bf27a6.DeployedLogs.dbo.ConcurrentRecord__1__System.DateTime.FromBinary(5246322962427387904 /* 2012-02-01T12:00:00.0000000Z */) 已经存在。

如果您想了解更多详细信息,请在 Microsoft 的 mrys 与我联系。

于 2016-06-02T18:46:22.320 回答