Azure 数据工厂 - 写入 blob 存储时间歇性出现 400 错误

标签 azure azure-storage azure-blob-storage azure-data-factory

我正在使用带有 blob 存储的数据工厂。

我有时会间歇性地收到以下错误 - 这可能发生在不同的管道/数据源上。但是,无论哪个任务失败,我总是遇到相同的错误 - 400 指定的阻止列表无效。

Copy activity encountered a user error at Sink side: ErrorCode=UserErrorBlobUploadFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error occurred when trying to upload blob 'https://blob.core.windows.net/', detailed message: The remote server returned an error: (400) Bad Request.,Source=,''Type=Microsoft.WindowsAzure.Storage.StorageException,Message=The remote server returned an error: (400) Bad Request.,Source=Microsoft.WindowsAzure.Storage,StorageExtendedMessage=The specified block list is invalid. Type=System.Net.WebException,Message=The remote server returned an error: (400) Bad Request.,Source=Microsoft.WindowsAzure.Storage

如果一次有多个任务正在运行并将数据写入存储,这似乎是最常见的。我可以做些什么来使这个过程更加可靠吗?是否有可能配置错误?它导致数据工厂中的切片失败,所以我真的很想知道我应该调查什么。

遇到此问题的示例管道:

{
  "$schema": "http://datafactories.schema.management.azure.com/schemas/2015-09-01/Microsoft.DataFactory.Pipeline.json",
  "name": "Pipeline",
  "properties": {
    "description": "Pipeline to copy Processed CSV from Data Lake to blob storage",
    "activities": [
      {
        "type": "Copy",
        "typeProperties": {
          "source": {
            "type": "AzureDataLakeStoreSource"
          },
          "sink": {
            "type": "BlobSink",
            "writeBatchSize": 0,
            "writeBatchTimeout": "00:00:00"
          }
        },
        "inputs": [ { "name": "DataLake" } ],
        "outputs": [ { "name": "Blob" } ],
        "policy": {
          "concurrency": 10,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        },
        "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "name": "CopyActivity"
      }
    ],
    "start": "2016-02-28",
    "end": "2016-02-29",
    "isPaused": false,
    "pipelineMode": "Scheduled"
  }
}

我只使用 LRS 标准存储,但我仍然不希望它间歇性地抛出错误。

编辑:添加链接服务 json

{
  "$schema": "http://datafactories.schema.management.azure.com/schemas/2015-09-01/Microsoft.DataFactory.LinkedService.json",
  "name": "Ls-Staging-Storage",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=;AccountKey="
    }
  }
}

最佳答案

此类错误主要是由赛车问题引起的。例如。多个并发事件运行写入同一个 blob 文件。

您能否进一步检查一下您的管道设置是否是这种情况?如果是这样,请避免这样的设置。

关于Azure 数据工厂 - 写入 blob 存储时间歇性出现 400 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43546814/

相关文章:

azure - Microsoft Azure 与 "regular"虚拟主机相比

azure - 公共(public)交通 azure 消息停止被接收

php - 我在使用 Azure 登录时跳过了权限请求接口(interface)。提供了 'Grant admin consent' 权限。但 MFA 现在禁用

c#-4.0 - 在服务器上调整图像大小,然后上传到 azure

azure - 为什么 Azure 目录列表中会出现文件名为 $$$.$$$ 的 blob?

python - Azure 数据工厂 Python SDK 创建触发器

c# - Azure 存储容器大小

azure - 使用asp core在azure blob中下载并创建空文件夹

azure - 有没有办法将数据从 Azure Blob 持续传输到 BigQuery?

python-3.x - 使用 SAS token 将文件从 Amazon AWS s3 传输到 Azure Blob 的 python 脚本