使用 Azure Data Lake Analytics 分析网站日志

了解如何使用 Data Lake Analytics 分析网站日志,尤其是在发现哪些引用者尝试访问该网站时遇到错误。

重要

Azure Data Lake Analytics 于 2024 年 2 月 29 日停用。 了解更多信息,请查看此公告。

对于数据分析,你的组织可以使用 Azure Synapse Analytics 或 Microsoft Fabric。

先决条件

连接到 Azure

必须先连接到 Azure,然后才能生成和测试任何 U-SQL 脚本。

连接到 Data Lake Analytics

  1. 打开 Visual Studio。
  2. 选择 Data Lake > 选项和设置。
  3. 选择 “登录”或 “更改用户 ”(如果有人已登录),然后按照说明进行作。
  4. 选择 “确定 ”以关闭“选项和设置”对话框。

浏览您的 Data Lake Analytics 帐户

  1. 在 Visual Studio 中,按 Ctrl+Alt+S 打开服务器资源管理器。
  2. 在 服务器资源管理器中,展开 Azure,然后展开 Data Lake Analytics。 如果有任何帐户,则会看到 Data Lake Analytics 帐户的列表。 无法从工作室创建 Data Lake Analytics 帐户。 若要创建帐户,请参阅 Azure 门户的 Azure Data Lake Analytics 入门,或使用 Azure PowerShell 开始使用 Azure Data Lake Analytics。

开发 U-SQL 应用程序

U-SQL 应用程序主要是 U-SQL 脚本。 若要了解有关 U-SQL 的详细信息,请参阅 U-SQL 入门。

可以向应用程序添加额外的用户定义运算符。 有关详细信息,请参阅 为 Data Lake Analytics 作业开发 U-SQL 用户定义的运算符。

创建并提交数据湖分析任务

  1. 选择 “文件 > 新建 > 项目”。

  2. 选择 U-SQL 项目类型。

    新的 U-SQL Visual Studio 项目

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

  4. 在 Script.usql 文件中输入以下脚本:

    // Create a database for easy reuse, so you don't need to read from a file very time.
    CREATE DATABASE IF NOT EXISTS SampleDBTutorials;
    
    // Create a Table valued function. TVF ensures that your jobs fetch data from he weblog file with the correct schema.
    DROP FUNCTION IF EXISTS SampleDBTutorials.dbo.WeblogsView;
    CREATE FUNCTION SampleDBTutorials.dbo.WeblogsView()
    RETURNS @result TABLE
    (
        s_date DateTime,
        s_time string,
        s_sitename string,
        cs_method string,
        cs_uristem string,
        cs_uriquery string,
        s_port int,
        cs_username string,
        c_ip string,
        cs_useragent string,
        cs_cookie string,
        cs_referer string,
        cs_host string,
        sc_status int,
        sc_substatus int,
        sc_win32status int,
        sc_bytes int,
        cs_bytes int,
        s_timetaken int
    )
    AS
    BEGIN
    
        @result = EXTRACT
            s_date DateTime,
            s_time string,
            s_sitename string,
            cs_method string,
            cs_uristem string,
            cs_uriquery string,
            s_port int,
            cs_username string,
            c_ip string,
            cs_useragent string,
            cs_cookie string,
            cs_referer string,
            cs_host string,
            sc_status int,
            sc_substatus int,
            sc_win32status int,
            sc_bytes int,
            cs_bytes int,
            s_timetaken int
        FROM @"/Samples/Data/WebLog.log"
        USING Extractors.Text(delimiter:' ');
        RETURN;
    END;
    
    // Create a table for storing referrers and status
    DROP TABLE IF EXISTS SampleDBTutorials.dbo.ReferrersPerDay;
    @weblog = SampleDBTutorials.dbo.WeblogsView();
    CREATE TABLE SampleDBTutorials.dbo.ReferrersPerDay
    (
        INDEX idx1
        CLUSTERED(Year ASC)
        DISTRIBUTED BY HASH(Year)
    ) AS
    
    SELECT s_date.Year AS Year,
        s_date.Month AS Month,
        s_date.Day AS Day,
        cs_referer,
        sc_status,
        COUNT(DISTINCT c_ip) AS cnt
    FROM @weblog
    GROUP BY s_date,
            cs_referer,
            sc_status;
    

    若要了解 U-SQL,请参阅 Data Lake Analytics U-SQL 语言入门。

  5. 向项目添加新的 U-SQL 脚本并输入以下内容:

    // Query the referrers that ran into errors
    @content =
        SELECT *
        FROM SampleDBTutorials.dbo.ReferrersPerDay
        WHERE sc_status >=400 AND sc_status < 500;
    
    OUTPUT @content
    TO @"/Samples/Outputs/UnsuccessfulResponses.log"
    USING Outputters.Tsv();
    
  6. 切换回第一个 U-SQL 脚本,然后在 “提交 ”按钮旁边,指定 Analytics 帐户。

  7. 在 解决方案资源管理器中,右键单击 Script.usql,然后选择“ 生成脚本”。 在“输出”窗格中验证结果。

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

  9. 验证 分析账户 是否是您希望运行作业的账户,然后选择提交。 当提交完成后,提交结果和作业链接可在 Visual Studio 的 Data Lake 工具结果窗口中查看。

  10. 等待作业成功完成。 如果作业失败,则很可能缺少源文件。 请参阅本教程的“先决条件”部分。 有关故障排除的详细信息,请参阅 监视和排查 Azure Data Lake Analytics 作业问题。

    作业完成后,会看到以下屏幕:

    Data Lake Analytics 分析 Weblog 网站日志

  11. 现在对 Script1.usql 重复步骤 7- 10。

查看任务输出

  1. 在服务器资源管理器中,展开Azure,展开Data Lake Analytics,展开你的 Data Lake Analytics 帐户,展开存储帐户,右键单击默认的 Data Lake Storage 帐户,然后选择Explorer。
  2. 双击 “示例 ”以打开文件夹,然后双击“ 输出”。
  3. 双击 UnsuccessfulResponses.log。
  4. 还可以双击作业图形视图中的输出文件,以便直接导航到输出。

后续步骤

若要使用不同的工具开始使用 Data Lake Analytics,请参阅: