我正在尝试使用Azure Enterprise API使用HDInsight进行一些报告。但是,HDInsight似乎只支持块blob格式,而从Azure API接收的文件是附加blob。
从Azure数据移动库的示例代码中,我使用以下代码段来执行将结果从API提取到存储帐户的任务。但是,我需要它来阻止blob,到目前为止我无法找到解决方案。我尝试过使用UploadAsync方法,但在这种情况下没有上传任何内容。
//ConsoleKeyInfo keyinfo;
try
{
task = TransferManager.CopyAsync(uri, blob, true, null, context, cancellationSource.Token);
//while (!task.IsCompleted)
//{
// if (Console.KeyAvailable)
// {
// keyinfo = Console.ReadKey(true);
// if (keyinfo.Key == ConsoleKey.C)
// {
// cancellationSource.Cancel();
// }
// }
//}
await task;
}
正如您所说,目前HDInsight中不支持Append Blobs。您可以使用TransferManager.CopyAsync从API获取结果,API是存储帐户的追加blob。
测试后,复制blob时,必须确保其类型相同。如果没有,您将收到以下错误消息。
根据您的要求,我建议您先下载附加blob。然后,当您将blob上传到存储帐户时,您可以选择blob的块类型。
此外,你可以使用Azcopy来实现它。