Фабрика данных Azure выдает ошибку «Требуется длина» при копировании из SQL в ADLS - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь скопировать данные с локального сервера SQL в хранилище озера данных Azure (ADLS) через фабрику данных Azure (ADF).Кажется, что все работает, кроме того, что когда я запускаю (отлаживаю или запускаю) конвейер, я получаю сообщение об ошибке:

{"errorCode": "2200", "message": "Сбой произошел при 'Sink"'side. ErrorCode = UserErrorAdlsFileWriteFailed,' Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message = Ошибка записи в AzureDataLakeStore. Сообщение: удаленный сервер возвратил ошибку: (411) Длина обязательна .. Детали ответа: \ r\ nДлина обязательна \ r \ n \ r \ n

Требуется длина

\ r \ n

Ошибка HTTP 411. Запрос должен быть разделен на части или иметь длину содержимого.

\ r \n \ r \ n, Source = Microsoft.DataTransfer.ClientLibrary, '' Type = System.Net.WebException, Message = Удаленный сервер возвратил ошибку: (411) Длина обязательна., Source = System, '"," faultType ": "UserError", "target": "CopyData1"}

Что действительно странно, так это то, что работают следующие конвейеры:

  • SQL tbl1 -> SQL tbl2
  • ADLS source.txt -> ADLS sink.txt

Т.е. работает доступ для чтения / записи как и ожидалось.Последний конвейер также может создавать / перезаписывать файл sink.txt.

Но когда я запускаю конвейер

  • SQL tbl1 -> sink.txt

Я получаю ошибку Required .А если существует файл sink.txt, конвейер даже удаляет его!

Я использую ADFv2, ADLS Gen1, ADF и ADLS, которые находятся в одной и той же группе подписок / ресурсов, с использованием selfhostted / Azure Integration Runtime (для SQL /ADLS соответственно).Я проверил с заявлением источника так же просто, как «SELECT 1 Col».Также протестировано без схемы набора данных и со схемами + сопоставлениями.

Это ошибка или я что-то упустил?Какая «длина» требуется?


РЕДАКТИРОВАТЬ 1: минимальные JSON-скрипты

pipe1.json

{
    "name": "pipeline1",
    "properties": {
        "activities": [
            {
                "name": "CopyData1",
                "type": "Copy",
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "typeProperties": {
                    "source": {
                        "type": "SqlSource",
                        "sqlReaderQuery": "SELECT TOP 1 'x' AS col1 FROM sys.tables"
                    },
                    "sink": {
                        "type": "AzureDataLakeStoreSink"
                    },
                    "enableStaging": false,
                    "dataIntegrationUnits": 0
                },
                "inputs": [
                    {
                        "referenceName": "table1",
                        "type": "DatasetReference"
                    }
                ],
                "outputs": [
                    {
                        "referenceName": "sink1",
                        "type": "DatasetReference"
                    }
                ]
            }
        ]
    }
}

table1.json

{
    "name": "table1",
    "properties": {
        "linkedServiceName": {
            "referenceName": "SqlServer1",
            "type": "LinkedServiceReference"
        },
        "type": "SqlServerTable",
        "typeProperties": {
            "tableName": "sys.tables"
        }
    }
}

sink1.json

{
    "name": "sink1",
    "properties": {
        "linkedServiceName": {
            "referenceName": "AzureDataLakeStore1",
            "type": "LinkedServiceReference"
        },
        "type": "AzureDataLakeStoreFile",
        "structure": [
            {
                "name": "col1",
                "type": "String"
            }
        ],
        "typeProperties": {
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ",",
                "rowDelimiter": "",
                "nullValue": "\\N",
                "treatEmptyAsNull": true,
                "skipLineCount": 0,
                "firstRowAsHeader": true
            },
            "fileName": "sink1.txt",
            "folderPath": "myDir"
        }
    }
}

РЕДАКТИРОВАТЬ 2: Сводка проведенных тестов

  • SQL -> Ошибка ADLS
  • Oracle -> Ошибка ADLS
  • SQL -> Blob OK
  • Oracle -> Blob OK
  • SQL -> SQL OK
  • ADLS -> ADLS OK
  • AzureSQLDB-> ADLS OK

1 Ответ

0 голосов
/ 19 ноября 2018

Есть ли в вашем автономном ИК-прокси какая-либо настройка прокси-сервера или он проходит через специальные настройки сети?Такая ошибка должна быть вызвана промежуточной прокси-службой, когда ADLS-соединитель ADF пытался установить связь со службой ADLS.

...