从 C# 为 Azure Data Lake Analytics 创建作业

CreateJob for Azure Data Lake Analytics from C#

我正在尝试使用 C# api 和 DataLakeAnalyticsJobManagementClient 创建作业,但每次尝试都失败并显示错误消息:"Invalid job definition." .没有关于它无效的其他有用信息。该作业是一个 U-SQL 作业,我开始在 Azure 门户中创建它并且工作正常并且 运行 正确无误。

我正在使用门户测试使用的相同信息构建 JobInformation 和 JobProperties,并且我知道 U-SQL 语句是有效的。

JobProperties props = new JobProperties(File.ReadAllText(@"C:\myusqlscript.usql"));
var myId = Guid.NewGuid();
JobInformation jobNfo = new JobInformation("mysamplejob", JobType.USql, props,myId) { DegreeOfParallelism = 1, Priority = 1000};

jobNfo.Validate();  //<--this doesn't throw an exception either

var jobs = await _adlaJobClient.Job.ListAsync("myanalyticsaccountname");
var adlaJob = await _adlaJobClient.Job.CreateAsync("myanalyticsaccountname", myId, jobNfo);

我尝试了构造函数和 属性 设置的各种组合,包括仅对某些属性使用默认值,我得到了相同的结果:"Invalid job definition."没有其他信息表明缺少信息或格式问题或类似问题。

有人使用 C# 创建了 Azure Data Lake Analytics 作业吗API?

Anyone out there created Azure Data Lake Analytics jobs with the C# API?

您需要使用 USqlJobProperties 而不是 JobProperties。

var props = new USqlJobProperties(File.ReadAllText(@"C:\myusqlscript.usql"));

本文档Data Lake analytics get started .NET SDK is not available. But we can also get some useful sample code from the histories的官方文档。

public static Guid SubmitJobByPath(string scriptPath, string jobName)
{
    var script = File.ReadAllText(scriptPath);
    var jobId = Guid.NewGuid();
    var properties = new USqlJobProperties(script);
    var parameters = new JobInformation(jobName, JobType.USql, properties, priority: 1, degreeOfParallelism: 1, jobId: jobId);
    var jobInfo = _adlaJobClient.Job.Create(_adlaAccountName, jobId, parameters);
    return jobId;
}