首页 文章

在azure数据湖上处理多个文件

提问于
浏览
0

假设azure data lake store上有两个文件集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

我想获得一些值(比如说实体的DateCreated)并使用这些值为B set生成文件路径 .

我怎么能实现这一目标?

一些想法,但我不确定这一点 . 1.在某个存储(azure数据湖或azure sql数据库)上选择A 2.store中的值 . 3.构建一个逗号分隔的字符串pStr 4.通过Data Factory将pStr传递给存储过程,该过程生成带有模式的文件路径 .

EDIT

根据@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"]
}

包含Lookup和第二个USQL脚本的ADF管道 . Lookup读取这个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“]”

并且脚本甚至没有在它之后编译 .

2 回答

  • 2

    试试这个root链接,这可以帮助你从所有关于u-sql开始:http://usql.io

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

  • 1

    您将需要两个U-SQL作业,但您可以使用ADF Lookup活动来读取文件集 .

    您的第一个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参数中将其作为DECLARE语句写入U-SQL脚本的顶部 . 如果您希望在脚本中编写一个默认值,请使用DECLARE EXTERNAL - 这将被ADF写入的DECLARE语句覆盖,因此不会导致错误 .

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

相关问题