Невозможно перенести файл полибазы ADF из хранилища Azure в пул Synapse (хранилище данных SQL)

#azure-data-factory #azure-synapse #polybase

#azure-data-factory #azure-synapse #polybase

Вопрос:

Как я могу заставить ADF копировать polybase в, чтобы просто скопировать один файл из хранилища Azure в пул Synapse (хранилище данных SQL)

Я постоянно получаю эту ошибку:

 Operation on target Storage to Synapse failed: ErrorCode=FailedDbOperation,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error happened when loading data into SQL Data Warehouse.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Data.SqlClient.SqlException,Message=HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: HadoopSqlException: Error converting data type NVARCHAR to BIGINT.,Source=.Net SqlClient Data Provider,SqlErrorNumber=107090,Class=16,ErrorCode=-2146232060,State=1,Errors=[{Class=16,Number=107090,State=1,Message=HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: HadoopSqlException: Error converting data type NVARCHAR to BIGINT.,},],'
 

Краткие сведения: HadoopSqlException: Error converting data type NVARCHAR to BIGINT.,},],

Это пример того, как выглядит мой файл, сжатие gzip:

 6872602179|359154818|84154822|1|37.00|68629.82|0.08|0.06|A|F|1992-09-01|1992-08-18|1992-09-05|TAKE BACK RETURN|REG AIR|efully. quickly bold deposits wake alo
6872602179|315023025|90023035|2|22.00|20509.94|0.02|0.05|A|F|1992-10-01|1992-07-06|1992-10-08|DELIVER IN PERSON|FOB| furious, pen
6872602179|591976355|41976366|3|41.00|57472.16|0.07|0.00|A|F|1992-07-23|1992-08-06|1992-08-18|TAKE BACK RETURN|AIR|have to are about the final instructions. 
6872602179|1346584608|46584609|4|37.00|60135.36|0.00|0.05|R|F|1992-09-06|1992-07-23|1992-10-01|TAKE BACK RETURN|FOB|ackages according to the r
6872602179|47498972|97498973|5|31.00|61026.60|0.02|0.03|R|F|1992-06-05|1992-07-21|1992-06-07|NONE|REG AIR|ests cajole slyly quickly special attai
6872602179|315209731|90209741|6|31.00|56574.38|0.06|0.05|R|F|1992-06-15|1992-07-27|1992-07-15|COLLECT COD|SHIP|y bold instructions. even p
 

настройки исходного набора данных в ADF:
введите описание изображения здесь

Параметры копирования ADF:

Источник:

введите описание изображения здесь

приемник:

введите описание изображения здесь

сопоставление:

введите описание изображения здесь

схема целевой таблицы:

 CREATE  table dbo.[lineitem](
    [L_OrderKey] [bigint] NULL,
    [L_PartKey] [bigint] NULL,
    [L_SuppKey] [bigint] NULL,
    [L_LineNumber] [bigint] NULL,
    [L_Quantity] [bigint] NULL,
    [L_dboendedPrice] [decimal](13, 2) NULL,
    [L_Discount] [decimal](13, 2) NULL,
    [L_Tax] [decimal](13, 2) NULL,
    [L_ReturnFlag] [varchar](64) NULL,
    [L_LineStatus] [varchar](64) NULL,
    [L_ShipDate] [datetime] NULL,
    [L_CommitDate] [datetime] NULL,
    [L_ReceiptDate] [datetime] NULL,
    [L_ShipInstruct] [varchar](64) NULL,
    [L_ShipMode] [varchar](64) NULL,
    [L_Comment] [varchar](64) NULL    
) ;
 

Комментарии:

1. Не могли бы вы попробовать установить строку типа исходного столбца в настройках сопоставления?

2. Можете ли вы попробовать везде изменить 5-й столбец на десятичный, поскольку в файле есть десятичные дроби? Если это не так, попробуйте удалять по одному столбцу bigint за раз из сопоставления, пока оно не заработает, чтобы вы могли определить виновника. Моя ставка на 5-й столбец.

3. @GregGalloway вот и все, прошло так много времени с тех пор, как мне приходилось это делать, очень неприятно, поскольку внешняя таблица сработала немедленно… Спасибо

Ответ №1:

Я бы рекомендовал отладить эту проблему, сохранив только 1 столбец BigInt в начале вашей таблицы polybase, если это удастся, это означает, что в столбце 1 нет данных, в которых возникает эта проблема, для второго запуска отладки сохраните только 2 столбца BigInt, а затем проверьте.

Таким образом, вы сможете узнать, в каком фактическом столбце возникла проблема, а затем вы сможете проверить свой файл на наличие каких-либо проблем с данными.

Дайте мне знать, если это поможет!

Спасибо!