を取得:Azureのデータ湖解析IOutputterは私がAAローカルデータベースに私のU-SQLスクリプトの結果を書き込むために、カスタムIOutputterを使用している出力ファイル名
OUTPUT @dataset
TO "/path/somefilename_{*}.file"
USING new CustomOutputter()
public class CustomOutputter: IOutputter
{
public CustomOutputter()
{
myCustomDatabase.Open("databasefile.database");
}
public override void Output(IRow input, IUnstructuredWriter output)
{
}
}
「databasefileを置き換えるために、任意の可能性があります。指定された出力ファイルパス "/path/somefilename_{*}.file"を使用して "データベース"を作成しますか?
output.BaseStream
をデータベースに渡すことができないため、正しいファイル名に正しく書き込む方法が見つかりません。
public override void Close()
{
using (var fs = File.Open("databasefile.database", FileMode.Open))
{
byte[] buffer = new byte[65536];
int read;
while ((read = fs.Read(buffer, 0, buffer.Length)) > 0)
{
this.output.BaseStream.Write(buffer, 0, read);
this.output.BaseStream.Flush();
}
}
}
ありがとうございます。 私の意図は、ADLAにデータベースファイルを作成させて、それ以上の処理をせずに他のサービスで使用できるようにすることでした。 ADLAのこれらの制限のため、私は、 DFとADLA出力をデータベースファイル形式に変換するためのカスタムアクティビティを作成できますか? – coalmee
実際には、2つのオプションがあります。 1. ADFを使用してデータ移動を行います。 2.カスタム出力を使用する場合は、次のように試してみてください。 頂点にローカルなデータベースに出力行セットを書き込みます(データベースをリソースとして展開する必要があるかもしれないので、データベース・インタフェースを使用して、データベース・ファイルを使用して、データベース・ファイルを頂点ローカル・ディレクトリから出力ストリームに読み込み、そのファイルをADLSにコピーします。アトミックなファイル処理が必要であり、データベースをリソースとして頂点に展開することに注意してください。 –
私は第2のアプローチを好むでしょう。私は既にDBファイルを出力ストリームにコピーしようとしました。しかし、出力ストリームにファイルを書き込んでいる間は、行サイズの制限が4MBで失敗しています。参照:http://stackoverflow.com/questions/41533328/azure-data-lake-analytics-ioutputter-e-runtime-user-rowtoobig – coalmee