大数据处理语言:U-SQL 介绍
还要注意每个表达式分配了一个变量 (@t,@res)。允许 U-SQL 通过一步步的表达式(增量表达式流),递增的转换和编译数据,增量表达式是使用函数式 lambda 表达式组成(与 Pig ?语言类似)。执行框架,并且编译所有的表达式为一个的表达式。这个表达式可以是全局最优化,所以扩展的方式不可能是逐行执行表达式。下面的图标通过向你显示图表的方式,显示在这篇博文中的下一个查询: 回到我们的例子,我现在想要添加额外的信息:关于推文中提及的人,并且扩展我的聚合去返回在我的 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元数据目录里部署和注册代码集。这样,我们或者其他人可以不时重用这组脚本。以下例子表示了,在代码集注册为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(); 由于之前提到了除了删除@标识符之外,还想要对 mentions 做其他清理工作,所以该代码集还包含了一个 cleanup_mentions 函数,用来在删除@之后做其他处理。 为什么选择U-SQL 通过上述介绍,希望您已经窥测到了我们对 U-SQL 的想法,以及 U-SQL 是如何将查询以及大数据处理变得简单的。接下来的几周里,我们会进一步介绍该语言的设计逻辑,并会给出一些示例代码即应用场景,请参见Azure 博客大数据专题。我们会深入探讨一下特性:
U-SQL 将大数据处理变得简单:
不只是 U-SQL - Auzre 数据湖为您的所有数据创建生产力 我们旨在将 Azure 数据湖建立成最有用的集编写,调试和优化各种规模数据功能的强大工具,U-SQL只是其中一个环节。通过对编写与监控 Hive 作业的全面支持, 我们开发了基于 C# 的编码模型,他可以创建用于流处理的 Storm 作业,而且从创建,到执行,支持作业生命周期的每一阶段。Azure 数据湖使得您可以专心于业务逻辑而不是调试分布式环境。我们的目标就是将大数据技术变得更加简单,被更多数人使用:大数据专家,工程师,数据科学家,分析师以及应用开发人员。 (编辑:91站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |