【问题标题】:process multiple files on azure data lake在 azure 数据湖上处理多个文件
【发布时间】:2018-03-05 14:52:51
【问题描述】:

假设 azure 数据湖存储中有两个文件集 A 和 B。

/A/Year/
/A/Month/Day/Month/
/A/Year/Month/Day/A_Year_Month_Day_Hour

/B/Year/
/B/Month/Day/Month/
/B/Year/Month/Day/B_Year_Month_Day_Hour

我想获取一些值(假设是 A 实体的 DateCreated)并使用这些值生成 B 集的文件路径。

我怎样才能做到这一点?

一些想法,但我不确定。 1.从A中选择值 2. 存储在一些存储上(天蓝色数据湖或天蓝色 sql 数据库)。 3. 建立一个逗号分隔的字符串 pStr 4. 通过数据工厂将 pStr 传递给存储过程,该存储过程生成带有模式的文件路径。

编辑

根据@mabasile_MSFT 的回答

这是我现在拥有的。 第一个生成 json 文件的 USQL 脚本,如下所示。

{
FileSet:["/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__12",
"/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__13",
"/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__14",
"/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__15"]
}

包含查找和第二个 USQL 脚本的 ADF 管道。 查找读取此 json 文件 FileSet 属性,据我了解,我需要以某种方式将此 json 数组传递给第二个脚本,对吗? 但是 usql 编译器会生成像

这样的字符串变量

DECLARE @fileSet string = "["/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__12", "/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__13", "/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__14", "/Data/SomeEntity/2018/3/5/SomeEntity_2018_3_5__15"]"

脚本甚至没有在它之后编译。

【问题讨论】:

  • 想知道您是如何解决这个问题的?

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


【解决方案1】:

您将需要两个 U-SQL 作业,但您可以改为使用 ADF 查找活动来读取文件集。

您的第一个 ADLA 作业应该从 A 中提取数据、构建文件集和 Azure Storage 中的 output to a JSON file

然后在 ADF 中使用 Lookup activity 从 Azure 存储中的 JSON 文件中读取文件集名称。

然后在 ADF 中定义您的第二个 U-SQL 活动。在 U-SQL 活动中将文件集设置为参数(如果您使用在线 UI,则在脚本 > 高级下) - 值将类似于 @{activity('MyLookupActivity').output.firstRow.FileSet}(请参阅上面的查找活动文档)。

ADF 将在 U-SQL 脚本顶部写入 U-SQL 参数作为 DECLARE 语句。如果您还希望将默认值编码到脚本中,请使用 DECLARE EXTERNAL - 这将被 ADF 写入的 DECLARE 语句覆盖,因此不会导致错误。

我希望这会有所帮助,如果您还有其他问题,请告诉我!

【讨论】:

  • 感谢您的更新。我目前正在研究是否可以通过查找活动传递一组参数,因为使用 ForEach 循环遍历查找活动会创建太多 U-SQL 作业。在那之前,使用fileset 对你有用吗?例如,如果您总是将新文件放入一个不同的文件夹并想要读取该文件夹的全部内容,则可以使用“/Data/SomeEntity/2018/3/5/{*}”从中选择所有文件文件夹。
【解决方案2】:

试试这个根链接,它可以帮助你开始了解 u-sql: http://usql.io

您问题的有用链接: https://saveenr.gitbooks.io/usql-tutorial/content/filesets/filesets-with-dates.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多