Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

Data Lake Analyticsに.NETからクエリを投げる

$
0
0

下準備については1つ前のエントリを参照してください。

blog.okazuki.jp

下準備で作ったプロジェクトに以下のアセンブリをNuGetから追加します(プレリリースで)

  • Microsoft.Azure.Management.DataLake.Analytics

そして下準備のプログラムに以下のような感じのプログラムを追加します。

// data upload
var ms = new MemoryStream();
var sw = new StreamWriter(ms);
sw.WriteLine("taro,12");
sw.WriteLine("jiro,14");
ms.Seek(0, SeekOrigin.Begin);
adlsFileSystemClient.FileSystem.Create("/sample1/data.csv", "Data Lakeストレージのアカウント名", ms, overwrite: true);

// 実行するクエリ
var query = @"    @src =        EXTRACT            Name string,            Age int        FROM ""/sample1/data.csv""        USING Extractors.Csv();    OUTPUT @src        TO ""/sample1/output.csv""        USING Outputters.Csv();";
// init
var adlaClient = new DataLakeAnalyticsAccountManagementClient(tokenCredentials)
{
    SubscriptionId = SubscriptionId
};
var adlaJobClient = new DataLakeAnalyticsJobManagementClient(tokenCredentials)
{
    SubscriptionId = SubscriptionId
};
var adlaCatalogClient = new DataLakeAnalyticsCatalogManagementClient(tokenCredentials)
{
    SubscriptionId = SubscriptionId
};

// add account(これいるのかな?? Createは動かなかった…)
adlaClient.Account.AddDataLakeStoreAccount("datalake",
    "dlsample",
    "dlsampleadls",
    new AddDataLakeStoreParameters(new DataLakeStoreAccountInfoProperties()));

var jobId = Guid.NewGuid();
var properties = new USqlJobProperties(query);
var parameters = new JobInformation("copy", JobType.USql, properties);
var jobInfo = adlaJobClient.Job.Create(jobId, parameters, "Data Lake Analyticsのアカウント名");
while (jobInfo.State != JobState.Ended)
{
    Console.WriteLine($"Waiting... {jobInfo.State}");
    Task.Delay(1000).Wait();
    jobInfo = adlaJobClient.Job.Get(jobId, "Data Lake Analyticsのアカウント名");
}
var jobResult = jobInfo.Result.Value;
Console.WriteLine(jobResult);
Console.ReadKey();

Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>