我们正在尝试从 ADFv2 运行 U-SQL 脚本,但出现阻止执行的错误。考虑到有关此问题的 MS 文档没有帮助,我再次向 SO 寻求一些帮助来解决此问题。
最初的问题是如何将 U-SQL 脚本部署到 ADLA。我们找不到任何有用的东西,最后只是将脚本复制粘贴到 ADLA 和 Azure Blob 存储上,有 2 种格式:.usql 和 .txt。(这也可能是问题之一)。
我们根据MS 文档创建了 ARM ,但它失败并出现错误:
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.01.2018
在与 MS 就 usql 的部署进行协商后,我们提供了 powershell 命令的组合:
- 我们执行一个脚本,上传位于 Datalake 文件夹中 u-sql 程序集的 bin 中的 .dll;
- 然后遍历目录并分别创建每个程序集;
- 对于 u-sql 脚本,我们已将它们创建为 Datalake Analytics 上的存储过程,并上传一个简单的 u-sql 脚本,该脚本使用所需参数执行这些过程;