J'utilise une coutume IOutputter pour écrire les résultats de mon script U-SQL aa base de données locale:Azure Données du lac Analytics IOutputter obtenir le nom du fichier de sortie
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)
{
}
}
Est-il possible de remplacer « DatabaseFile. base de données "avec le chemin de fichier de sortie spécifié" /chemin/somefilename_{*}.file "?
Puisque je ne peux pas passer output.BaseStream
à la base de données je ne peux pas trouver un moyen d'écrire correctement le nom de fichier correct.
MISE À JOUR Comment copier le fichier DB local au ADLA fourni 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();
}
}
}
Merci pour l'explication. Mon intention était de laisser ADLA créer un fichier de base de données, qui peut ensuite être consommé par d'autres services sans traitement supplémentaire. Donc, en raison de ces limitations de ADLA, il semble que je doive utiliser par ex. DF et une activité personnalisée pour convertir la sortie ADLA dans mon format de fichier de base de données, non? – coalmee
En fait vous avez deux options: 1. vous utilisez ADF pour faire le mouvement de données. 2. Si vous utilisez un outputter personnalisé, vous pouvez essayer ce qui suit: écrire l'ensemble de lignes en sortie dans la base de données locale (vous devrez peut-être déployer la base de données en tant que ressource, vous aurez probablement besoin d'une petite version entrer dans la limite de taille de ressource) en utilisant l'interface de base de données, puis lire le fichier de base de données à partir du répertoire local vertex dans le flux de sortie de sorte que vous copiez le fichier dans ADLS. Notez que vous avez besoin du traitement de fichier atomique et déployez la base de données en tant que ressource sur le vertex. –
Je préférerais la deuxième approche. J'ai déjà essayé de copier le fichier DB dans le flux de sortie. Mais il échoue avec une limite de taille de ligne de 4 Mo lors de l'écriture du fichier dans le flux de sortie. Voir aussi: http://stackoverflow.com/questions/41533328/azure-data-lake-analytics-ioutputter-e-runtime-user-rowtoobig – coalmee