开发 U-SQL 用户定义的运算符(UDO)

本文介绍如何开发用户定义的运算符来处理 U-SQL 作业中的数据。

在 U-SQL 中定义和使用用户定义的运算符

创建和提交 U-SQL 任务

  1. 在 Visual Studio 菜单中,选择“ 文件 > 新建 > 项目 > U-SQL 项目”。

  2. 选择“确定”。 Visual Studio 使用 Script.usql 文件创建解决方案。

  3. 解决方案资源管理器中,展开 Script.usql,然后双击 Script.usql.cs

  4. 将以下代码粘贴到文件中:

    using Microsoft.Analytics.Interfaces;
    using System.Collections.Generic;
    namespace USQL_UDO
    {
        public class CountryName : IProcessor
        {
            private static IDictionary<string, string> CountryTranslation = new Dictionary<string, string>
            {
                {
                    "Deutschland", "Germany"
                },
                {
                    "Suisse", "Switzerland"
                },
                {
                    "UK", "United Kingdom"
                },
                {
                    "USA", "United States of America"
                },
                {
                    "中国", "PR China"
                }
            };
            public override IRow Process(IRow input, IUpdatableRow output)
            {
                string UserID = input.Get<string>("UserID");
                string Name = input.Get<string>("Name");
                string Address = input.Get<string>("Address");
                string City = input.Get<string>("City");
                string State = input.Get<string>("State");
                string PostalCode = input.Get<string>("PostalCode");
                string Country = input.Get<string>("Country");
                string Phone = input.Get<string>("Phone");
                if (CountryTranslation.Keys.Contains(Country))
                {
                    Country = CountryTranslation[Country];
                }
                output.Set<string>(0, UserID);
                output.Set<string>(1, Name);
                output.Set<string>(2, Address);
                output.Set<string>(3, City);
                output.Set<string>(4, State);
                output.Set<string>(5, PostalCode);
                output.Set<string>(6, Country);
                output.Set<string>(7, Phone);
                return output.AsReadOnly();
            }
        }
    }
    
  5. 打开 Script.usql,并粘贴以下 U-SQL 脚本:

    @drivers =
        EXTRACT UserID      string,
                Name        string,
                Address     string,
                City        string,
                State       string,
                PostalCode  string,
                Country     string,
                Phone       string
        FROM "/Samples/Data/AmbulanceData/Drivers.txt"
        USING Extractors.Tsv(Encoding.Unicode);
    
    @drivers_CountryName =
        PROCESS @drivers
        PRODUCE UserID string,
                Name string,
                Address string,
                City string,
                State string,
                PostalCode string,
                Country string,
                Phone string
        USING new USQL_UDO.CountryName();
    
    OUTPUT @drivers_CountryName
        TO "/Samples/Outputs/Drivers.csv"
        USING Outputters.Csv(Encoding.Unicode);
    
  6. 指定 Data Lake Analytics 帐户、数据库和架构。

  7. 解决方案资源管理器中,右键单击 Script.usql,然后选择“ 生成脚本”。

  8. 解决方案资源管理器中,右键单击 Script.usql,然后选择“ 提交脚本”。

  9. 如果尚未连接到 Azure 订阅,系统会提示输入 Azure 帐户凭据。

  10. 选择提交。 提交结果和作业链接在提交完成后,可在“结果”窗口中获得。

  11. 选择“ 刷新 ”按钮可查看最新的作业状态并刷新屏幕。

查看输出

  1. 服务器资源管理器中,依次展开 AzureData Lake Analytics、Data Lake Analytics 帐户、 存储帐户、右键单击默认存储,然后选择 资源管理器

  2. 展开“示例”,展开“输出”,然后双击 Drivers.csv

后续步骤