Как ссылаться на определяемые пользователем операторы (UDO) в Microsoft Azure Data Analytics без использования Visual Studio - PullRequest
0 голосов
/ 06 июня 2018

У меня есть файл tsv в лазурном канале данных, который имеет поля ниже.

paperId, language_code

Мне нужно создать файл с полями ниже

language_id, language_code

где language_id - уникальный идентификатор, сгенерированный для каждого кода языка.

Для этого я написал UDO.Я следовал за статьей https://docs.microsoft.com/en-us/azure/data-lake-analytics/data-lake-analytics-u-sql-develop-user-defined-operators.

using Microsoft.Analytics.Interfaces;
using System.Collections.Generic;

namespace USQL_UDO
{
   public class LanguageCode : IProcessor
   {
       private static IDictionary<string, string> languageCodeID = new Dictionary<string, string>
       public override IRow Process(IRow input, IUpdatableRow output)
       {
            string UserID = input.Get<long>("PaperId");
            string LanguageCode = input.Get<string>("LanguageCode");
            string Language_id = "";

            if (languageCodeID.Keys.Contains(LanguageCode))
            {
                Language_id = languageCodeID[LanguageCode];
            }else
            {
                Language_id = GetTimestamp(DateTime.Now);
                languageCodeID[LanguageCode] = Language_id;
            }
            output.Set<string>(0, Language_id);
            output.Set<string>(1, LanguageCode);

            return output.AsReadOnly();
    }

    public static String GetTimestamp(this DateTime value)
    {
        return value.ToString("yyyyMMddHHmmssfff");
    }

   }
}

Но я не могу найти способ отсылать это в своем сценарии usql.Я не могу использовать Visual Studio, так как я работаю в среде Linux.Есть ли способ ссылаться на пользовательский класс в запросе usql.

Я очень плохо знаком с usql и лазурью.Я мог бы делать это совершенно бессмысленным способом.

Мой сценарий usql такой.

@inputA =
EXTRACT 
    PaperId long,
    LanguageCode string


FROM "/graph/2018-04-13/PaperLanguages.txt"
USING Extractors.Tsv(quoting : false);

@parsed_language =
     PROCESS @inputA
     PRODUCE Language_id string,
             LanguageCode string
     USING new USQL_UDO.LanguageCode();


OUTPUT @parsed_language
     TO "/output/parsedData/mag2__language.csv"
     USING Outputters.Text(outputHeader : true, quoting : false, delimiter: '~');

1 Ответ

0 голосов
/ 07 июня 2018

Не могли бы вы использовать инструмент VS Code ADL из Linux?

В худшем случае вы скомпилируете код и загрузите dll в свою учетную запись Azure Data Lake Store или Azure Storage, а затем зарегистрируете ее с помощью CREATE ASSEMBLY.Затем в вашем скрипте U-SQL вы вводите свой код с оператором REFERENCE ASSEMBLY.

Вот некоторые примеры: https://blogs.msdn.microsoft.com/azuredatalake/2016/08/26/how-to-register-u-sql-assemblies-in-your-u-sql-catalog/

...