Копирование данных в Azure SQL DW с помощью ADF (поэтапное копирование с использованием Polybase не работает согласно документации)

Попытка загрузить CSV-файлы из озера данных (поколение 2) в Azure Synapse с помощью фабрики данных Azure. В исходном файле есть escape-символ "(двойная кавычка). Это выходит за рамки ограничений данных, связанных с прямым подключением polybase к Data Lake. Я настраиваю поэтапную копию, следуя документации

"enableStaging": true,
  "stagingSettings": {
                                "linkedServiceName": {
                                    "referenceName": "LS_StagedCopy",
                                    "type": "LinkedServiceReference"
                                },
                                "path": "myContainer/myPath",
                                "enableCompression": false
                            }

После отладки конвейера я все еще получаю

{Class=16,Number=107090,State=1,Message=HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: HadoopExecutionException: Too many columns in the line.,},],

Я действительно вижу, как ADF создает временную папку по пути, который я указал в поэтапной копии, но похоже, что он не выполняет необходимое преобразование для загрузки данных. Я что-нибудь упускаю?

Ссылка на документ Копирование и преобразование данных в Хранилище данных SQL Azure с помощью фабрики данных Azure


person sab    schedule 22.11.2019    source источник


Ответы (1)


Скорее всего проблема в ваших данных. Проверьте свой разделитель. Надеюсь, это не "" или что-то вроде этого очевидного. Это обычная проблема, когда в одном столбце есть текст с множеством ",", ADF интерпретирует его как новый столбец. Протестируйте его с меньшим чистым CSV и продолжайте.

person ArunasB    schedule 16.12.2019
comment
Я использую трубу в качестве разделителя и использую тип файла как txt. Все еще получаю эту ошибку. Есть идеи, как я могу это решить? - person RB17; 05.07.2020