Я использую обычай IOutputter писать результаты моего U-SQL скрипт для аа локальной базы данных:Azure Lake Data Analytics 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 в выходной поток. Но он не работает с ограничением размера строки 4 МБ при записи файла в выходной поток. См. Также: http://stackoverflow.com/questions/41533328/azure-data-lake-analytics-ioutputter-e-runtime-user-rowtoobig – coalmee