【问题标题】:Data Lake Analytics FileSet Max数据湖分析 FileSet Max
【发布时间】:2018-02-12 15:43:47
【问题描述】:

在我的 Azure Data Lake 目录ingest 中,我有编号的文件:

ingest/file1.tsv
ingest/file2.tsv
ingest/file3.tsv

Azure 数据工厂 v2 U-SQL 活动中,如何仅在 FileSet 中编号最高的文件上运行 Extractors.Tsv()

【问题讨论】:

    标签: azure-data-factory azure-data-lake u-sql


    【解决方案1】:

    一种方法需要两个脚本:

    1. 脚本 1 将使用文件集功能获取最大值,然后将第二个脚本创建为文件(您存储在 WASB 帐户中,除非 ADF 现在也允许您在 ADLS 中引用脚本)。

    2. 然后执行脚本2。

    另一种方法是使用 ADLS SDK 获取最高数字,然后将该值传递给脚本,该脚本使用在数字上设置的文件,如下所示:

    DECLARE EXTERNAL @fileno int;
    @d = EXTRACT ..., fileno int 
         FROM "ingest/file{fileno}.tsv" 
         USING Extractors.Tsv();
    // predicate will be pushed into EXTRACT statement.
    @d = SELECT * FROM @d WHERE fileno == @fileno;
    

    单个脚本中语法上最简单的解决方案如下:

    @d = EXTRACT ..., fileno int 
         FROM "ingest/file{fileno}.tsv" 
         USING Extractors.Tsv();
    
    @maxfno = SELECT DISTINCT(MAX(fileno)) AS maxno FROM @d;
    
    @d = SELECT * FROM @d JOIN @maxfno ON fileno == maxno;
    

    但该语句不是恒定可折叠的,因此无论如何您都会读取所有文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-26
      • 2016-04-23
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 2018-03-12
      相关资源
      最近更新 更多