加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数据处理语言:U-SQL 介绍

发布时间:2021-03-06 02:42:51 所属栏目:大数据 来源:网络整理
导读:副标题#e# 微软宣布了新的 Azure 数据湖(Azure Data Lake)服务,该服务被用于云分析,包括了一个超大规模信息库;一个在 YARN 上建立的新的的分析服务,该服务允许数据开发者和数据科学家分析全部的数据;还有 HDInsight,一个全面管理 Hadoop、Spark、St

还要注意每个表达式分配了一个变量 (@t,@res)。允许 U-SQL 通过一步步的表达式(增量表达式流),递增的转换和编译数据,增量表达式是使用函数式 lambda 表达式组成(与 Pig ?语言类似)。执行框架,并且编译所有的表达式为一个的表达式。这个表达式可以是全局最优化,所以扩展的方式不可能是逐行执行表达式。下面的图标通过向你显示图表的方式,显示在这篇博文中的下一个查询:

大数据处理语言:U-SQL 介绍

回到我们的例子,我现在想要添加额外的信息:关于推文中提及的人,并且扩展我的聚合去返回在我的 tweet 网中出现的频率,还有他们的推文中提及我的频率。因为我可以使用 C# 去操作数据,所以我可以使用 C#LINQ 表达式扩展一个 ARRAY。这时我把得到的数组使用 EXPLODE 传入数据集,并且使用 CROSS APPLY 操作应用 EXPLODE 到每条数据。我使用 UNION 操作联合作者,但是需要使用@重新给变量赋值。

这里使用另外一个C#表达式(这里我使用了substring从第一位开始取数据-翻译认为应该是排除@符的意思) .

@t = EXTRACT date string

? ? ? ? ? ?,tweet string

? ? ?FROM "/input/MyTwitterHistory.csv"

? ? ?USING Extractors.Csv(); ??

@m = SELECT new SQL.ARRAY<string>(

? ? ? ? ? ? ? ? tweet.Split(' ').Where(x => x.StartsWith("@"))) AS refs

? ? ?FROM @t;

@t = SELECT author,"authored" AS category

? ? ?FROM @t

? ? ?UNION ALL

? ? ?SELECT r.Substring(1) AS r,"mentioned" AS category

? ? ?FROM @m CROSS APPLY EXPLODE(refs) AS Refs(r);

@res = SELECT author

? ? ? ? ? ?,category

? ? ? ? ? ?,COUNT(*) AS tweetcount

? ? ? ?FROM @t

? ? ? ?GROUP BY author,category;

OUTPUT @res TO "/output/MyTwitterAnalysis.csv"

ORDER BY tweetcount DESC

USING Outputters.Csv();

下一步,我可以使用 Visual Studio 的 Azure 数据湖工具里的代码转换功能将 C# 代码重构成 C# 函数。提交脚本后,系统会将代码自动部署到服务器上。

大数据处理语言:U-SQL 介绍

我们也可以在U-SQL元数据目录里部署和注册代码集。这样,我们或者其他人可以不时重用这组脚本。以下例子表示了,在代码集注册为TweetAnalysis之后,如何找到函数。

REFERENCE ASSEMBLY TweetAnalysis;

??

@t = EXTRACT date string

? ? ? ? ? ?,tweet string

? ? ?FROM "/input/MyTwitterHistory.csv"

? ? ?USING Extractors.Csv();

??

@m = SELECT Tweets.Udfs.get_mentions(tweet) AS refs

? ? ?FROM @t;

??

@t = SELECT author,"authored" AS category

? ? ?FROM @t

? ? ?UNION ALL

? ? SELECT Tweets.Udfs.cleanup_mentions(r) AS r,"mentioned" AS category

? ? FROM @m CROSS APPLY EXPLODE(refs) AS Refs(r);

??

@res = SELECT author

? ? ? ? ? ?,category;

??

OUTPUT @res

TO "/output/MyTwitterAnalysis.csv"

ORDER BY tweetcount DESC

USING Outputters.Csv();

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!