![](/img/trans.png)
[英]HDInsight cluster with metastore using powershell error
[英]AzCopy from HDInsight cluster failing in PowerShell script
我有一个PowerShell脚本,可以在HDinsight上使用配置单元创建一些输出。 输出放在本地blob中,然后使用AzCopy将其复制到本地计算机。 我做了很多工作来获取我需要的各种数据,通常多次调用该脚本。 问题是,在某些时候, AzCopy
错误消息“消息”使用HTTP条件头指定的条件不符合。“,但是在经过多次成功迭代之后。
我不确定这意味着什么,而且一个小小的成绩单也没有多大帮助。 我尝试删除文件并重复AzCopy
并且错误仍然存在,因此它可能与AzCopy
http会话有关。 任何人都可以开导我吗?
PS C:\hive> AzCopy /Y /Source:https://msftcampusdata.blob.core.windows.net/crunch88-1 /Dest:c:\hive\extracts\data\ /SourceKey:attEwHZ9AGq7pzzTYwRvjWwcmwLvFqnkxIvJcTblYnZAs1GSsCCtvbBKz9T/TTtwDSVMDuU3DenBbmOYqPIMhQ== /Pattern:hivehost/stdout
AzCopy : [2015/05/10 15:08:44][ERROR] hivehost/stdout: The remote server returned an error: (412) The condition specified using HTTP conditional header(s)
is not met..
At line:1 char:1
+ AzCopy /Y /Source:https://msftcampusdata.blob.core.windows.net/crunch88-1 /Dest: ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ([2015/05/10 15:...s) is not met..:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
The condition specified using HTTP conditional header(s) is not met.
为了确保整个下载过程中的数据完整性,AzCopy将源blob的ETag传递到HTTP头“If-Match”,同时从源blob读取数据。 因此,HTTP状态代码412(前提条件失败)“不满足使用HTTP条件标头指定的条件。” 只是意味着在AzCopy下载时你的blob被改变了 。
下载时请避免更改源blob。 如果您必须同时更改源blob,可以尝试以下解决方法:
首先拍摄源blob的快照,然后使用AzCopy(指定/ Snapshot选项)下载blob,以便AzCopy尝试下载源blob及其所有快照。 虽然下载源blob可能会因412(前提条件失败)而失败,但下载快照可以成功。 下载的快照的文件名为:{blob name without extension}({snapshot timestamp})。{extension}。
有关AzCopy和选项/快照的更多信息,请参阅AzCopy命令行实用程序入门 。
一些更新:
您是否终止了AzCopy,然后使用相同的命令行恢复它? 如果是这样,您需要确保在上一次执行AzCopy之后源blob没有更改,因为AzCopy必须确保在第一次下载AzCopy并成功下载源blob之间的时间段内源blob保持不变。 为了检查是否发生了恢复,您可以检查AzCopy的输出是否包含“在日志目录{Dir Path}中检测到相同命令行的不完整操作,AzCopy将开始恢复。”。
因为/ Y是在命令行中指定的,所以恢复提示将始终回答“是”。 要避免恢复行为,可以在执行AzCopy之前清除默认日记文件夹“%LocalAppData%\\ Microsoft \\ Azure \\ AzCopy”,或指定/ Z:为每次执行配置唯一的日记文件夹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.