U-SQL устанавливает тип содержимого для выходных файлов - PullRequest
0 голосов
/ 09 января 2019

Я создал собственный выводчик для запроса U-SQL и использую для вывода двоичных [] данных изображения. Но тип содержимого изображения неправильный. Я пытаюсь изменить логику в настраиваемом выходном устройстве, и это не работает для меня, и для него установлен тип содержимого "text / plain; charset = utf-8"

Итак, есть ли способ установить тип содержимого для пользовательского преобразователя или сценария U-SQL?

Следующий код C # ниже - это пользовательский выход для сохранения данных изображения.

using Microsoft.Analytics.Interfaces;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;    
namespace ImageAssemblies
{
    [SqlUserDefinedExtractor(AtomicFileProcessing = true)]
    public class ImageOutputter : IOutputter
    {
        public override void Output(IRow input, IUnstructuredWriter output)
        {
            var obj = input.Get<object>(0);
            byte[] imageArray = (byte[])obj;
            using (MemoryStream ms = new MemoryStream(imageArray))
            {
                var image = Image.FromStream(ms);
                image.Save(output.BaseStream, ImageFormat.Gif);                
            }
        }
    }
}

Следующий скрипт U-SQL для выходных файлов изображений.

USE DATABASE [test];
REFERENCE ASSEMBLY [ImageAssemblies];
SET @@FeaturePreviews = "DataPartitionedOutput:on";

DECLARE @OutputPath string = @"wasb://thumbnail@xxxxxxxxxx.blob.core.windows.net/{FileName}.gif";

@image_out =
    SELECT ImageAssemblies.ImageOps.scaleImageTo(ImgData, 480, 480) AS thumbnail_image,
           FileName + "_480" AS FileName
    FROM dbo.ThumbnailImages;

OUTPUT @image_out
TO @OutputPath
USING new ImageAssemblies.ImageOutputter();

Неверный тип содержимого, выходное изображение

...