Мы пытаемся запустить сценарий U-SQL из ADFv2, но возникает ошибка, препятствующая выполнению. Учитывая, что документация MS по этой проблеме бесполезна, я снова прошу в SO помощь в устранении этой проблемы.
Первоначальная проблема заключается в том, как развернуть сценарий U-SQL в ADLA. Мы не смогли найти ничего полезного и в итоге просто скопировали и вставили скрипт в ADLA и в хранилище BLOB-объектов Azure в двух форматах: .usql и .txt. (это тоже может быть одной из проблем).
Мы создали ARM в соответствии с Документация MS, но происходит сбой с ошибкой:
ScriptPath should not be null
, что странно, поскольку это значение уже указано даже в связанной службе, а также в действии.
Ниже приведены LS и активность, которые мы создали:
Связанная служба:
{
"type": "linkedservices",
"name": "LinkedServiceofAzureBlobStorageforscriptPath",
"dependsOn": ["[parameters('dataFactoryName')]"],
"apiVersion": "[variables('apiVersion')]",
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": {
"type": "SecureString",
"value": "DefaultEndpointsProtocol=https;AccountName=<account>;AccountKey=<key>;EndpointSuffix=core.windows.net"
}
"scriptPath": "container\\script.txt"
//"scriptPath": "https://storage.blob.core.windows.net/container/script.txt"//"wasb://container@storage/script.txt",
}
}
}
Мероприятия:
{
"type": "DataLakeAnalyticsU-SQL",
"typeProperties": {
//"script": "master.dbo.sp_test()",
"scriptPath": "container\\script.txt"//"scriptPath": "https://storage.blob.core.windows.net/container/script.txt"//"wasb://container@storage/script.txt",
"scriptLinkedService": {
"referenceName": "LinkedServiceofAzureBlobStorageforscriptPath",
"type": "LinkedServiceReference"
},
"degreeOfParallelism": 3,
"priority": 100
},
"name": "CopyFromAzureBlobToAzureSQL",
"description": "Copy data frm Azure blob to Azure SQL",
"linkedServiceName": {
"referenceName": "AzureDataLakeAnalyticsLinkedService",
"type": "LinkedServiceReference"
}
}
Также попробовал этот подход, но безуспешно.
Это фиктивный скрипт, который мы тестируем:
@a =
SELECT *
FROM(
VALUES
(
"Contoso",
1500.0
),
(
"Woodgrove",
2700.0
),
(
"Contoso",
1500.0
),
(
"Woodgrove",
2700.0
),
(
"Contoso",
1500.0
),
(
"Woodgrove",
2700.0
),
(
"Contoso",
1500.0
),
(
"Woodgrove",
2700.0
),
(
"Contoso",
1500.0
),
(
"Woodgrove",
2700.0
),
(
"Contoso",
1500.0
),
(
"Woodgrove",
2700.0
)
) AS
D( customer, amount );
OUTPUT @a
TO "/data"+DateTime.Now.ToString("yyyyMMddHHmmss")+".csv"
USING Outputters.Csv();
но было бы здорово, если бы вы могли указать на более сложный пример с некоторым кодом в сценарии.
Благодарю вас!
Обновление от 26 января 2018 г.
После консультации с MS относительно развертывания usql мы пришли к комбинации команд powershell:
- мы выполняем скрипт, который загружает .dll, которые находятся в корзине сборки u-sql, в папку на Datalake;
- затем прокрутите каталог и создайте каждую из сборок отдельно;
- для сценариев u-sql мы создали их как хранимые процедуры в Datalake Analytics и загрузили простой сценарий u-sql, который выполняет эти процедуры с необходимыми параметрами;