azure-data-lake - 如何在不使用 Visual Studio 的情况下在 Microsoft azure 数据分析中引用用户定义的运算符 (UDO)
问题描述
我在 azure datalake 中有 tsv 文件,该文件具有以下字段。
paperId,语言代码
我需要提供一个包含以下字段的文件
语言 ID,语言代码
其中 language_id 是为每个语言代码生成的唯一 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 脚本中引用它的方法。我在 linux 环境下工作时无法使用 Visual Studio。有没有办法在 usql 查询中引用自定义类。
我对 usql 和 azure 很陌生。我可能会以完全不明智的方式来做这件事。
我的 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: '~');
解决方案
你可以改用 Linux 中的 VS Code ADL 工具吗?
在最坏的情况下,您将编译代码并将 dll 上传到您的 Azure Data Lake Store 或 Azure 存储帐户,然后使用CREATE ASSEMBLY
. 然后在你的 U-SQL 脚本中,你引入了带有REFERENCE ASSEMBLY
语句的代码。
推荐阅读
- azure - Azure AKS:控制在缩减时应删除哪个节点
- group-by - PySpark Dataframe 中的 GroupBy 水平堆叠
- javascript - 如何定义异步函数?
- javascript - 如何使用带有登录详细信息的灯塔?
- javascript - 如何使用纯 JavaScript 更新所有子 ID
- c# - Nuget Hell:由于公钥差异,无法在 UWP 应用程序中引用 NuGet 包
- java - 使用 Keycloak 作为授权服务器,使用 Zuul 作为 API 网关
- pyspark - 在 pySpark 中定义自定义窗口函数
- ios - xcodebuild:离子电容器应用程序中的命令失败,退出代码为 65
- jquery - 将 HTML 表格数据和模型数据传递给控制器 MVC