1
我使用一個自定義IOutputter到我的U型SQL腳本的結果寫入到AA本地數據庫:Azure的數據分析湖得到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
傳遞到數據庫,我找不到正確寫入正確文件名的方法。
UPDATE我如何在本地數據庫文件複製到ADLA提供的OutputStream:
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
其實你有兩種選擇: 1.你用ADF來做數據移動。 2.如果您使用自定義輸出器,您可以嘗試以下操作: 將輸出行集寫入您的頂點本地的數據庫中(您可能必須將數據庫部署爲資源,因此可能需要佔用較小的版本適合資源大小限制),然後將數據庫文件從頂點本地目錄讀入輸出流,以便將文件複製到ADLS中。請注意,您需要原子文件處理並將數據庫作爲資源部署到頂點。 –
我寧願採用第二種方法。我已經嘗試將DB文件複製到輸出流。但是,在將文件寫入輸出流時,它的行大小限制爲4MB。請參閱:http://stackoverflow.com/questions/41533328/azure-data-lake-analytics-ioutputter-e-runtime-user-rowtoobig – coalmee