处理 Azure 数据湖上的多个文件



假设 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 中选择值 在某些存储(Azure Data Lake或Azure SQL Database)上 2.store。 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编译器生成字符串变量,例如

声明@fileSet字符串 = "["/数据/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"]">

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

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

第一个 ADLA 作业应从 A 中提取数据,生成文件集,然后输出到 Azure 存储中的 JSON 文件。

然后,使用 ADF 中的查找活动从 Azure 存储中的 JSON 文件中读取文件集名称。

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新